Solved

# what's wrong with this

Posted on 2000-04-11
163 Views
When I choose deposit, say \$200, the answer comes out in the 4,000 range. I think the case w of statement is putting me in an infinite loop. Everytime I choose withdrawal and withdrawal, it'll go into an infinite loop. I haven't even tried the see_balance procedure yet.

var balance: integer;
balance := \$1,000;

begin
writeln ('MENU OF CHOICES');
writeln (' 1) Deposit');
writeln (' 2) Withdrawal');
writeln (' 3) See balance');
writeln (' 4) Quit');

procedure Deposit;
var d: integer;
begin
write ('How much do you want to deposit?');
balance := balance + d;
end; {Deposit};

procedure Withdrawal;
var w: integer;
amount: integer;

begin
write ('How much do you want to withdrawal?');
write ('\$50');
write ('\$100');
write ('\$200');
write ('\$500');

case w of
1 : amount := 50;
2 : amount := 100;
3 : amount := 200;
4 : amount := 500
end; {case}
balance := balance - amount
end; {Withdrawal}

procedure {See_balance}
begin
writeln ('Your balance is ' , balance);
end; {See_balance}

begin {main}
repeat
write ('Enter choice ');
case choice of
1 : Deposit;
2 : Withdrawal;
3 : See_balance;
4 : {quit the loop}
else writeln ('Invalid choice -- choose again')
end; {case}
writeln
until choice = 4
end.

0
Question by:kazooie21
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
1 Comment

LVL 6

Accepted Solution

My name is Mud earned 30 total points
ID: 2706729
CONST
balance: integer = 1000;

begin
writeln ('MENU OF CHOICES');
writeln (' 1) Deposit');
writeln (' 2) Withdrawal');
writeln (' 3) See balance');
writeln (' 4) Quit');

procedure Deposit;
var
d: integer;
begin
write ('How much do you want to deposit?');
balance := balance + d;
end; {Deposit};

procedure Withdrawal;
var
w: integer;
amount: integer;
begin
write ('How much do you want to withdrawal?');
write ('\$50');
write ('\$100');
write ('\$200');
write ('\$500');
case w of
1 : amount := 50;
2 : amount := 100;
3 : amount := 200;
4 : amount := 500
end; {case}
If balance > amount Then
balance := balance - amount
else
Begin
WriteLn('You don't have that kind of money');
WriteLn('Do you think we're stupid to give you money, you moron');
WriteLn('Thanks for your preference');
End
end; {Withdrawal}

procedure See_balance
begin
writeln ('Your balance is ' , balance);
end; {See_balance}

begin {main}
repeat
write ('Enter choice ');
case choice of
1 : Deposit;
2 : Withdrawal;
3 : See_balance;
4 : {quit the loop}
else writeln ('Invalid choice -- choose again')
end; {case}
writeln
until choice = 4
end.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

The following article is comprised of the pearls we have garnered deploying virtualization solutions since Virtual Server 2005 and subsequent 2008 RTM+ Hyper-V in standalone and clustered environments.
When using a search centre, I'm going to show you how to configure Sharepoint's search to only return results from the current site collection. Very useful when using Office 365 with multiple site collections.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
###### Suggested Courses
Course of the Month9 days, 10 hours left to enroll

#### 740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.