0

I can't seem to figure out why this while loop stopped looping. It was doing fine before I moved some code around. Now I got something else working and it just doesn't loop. I've also tried making quit a bool set to true and tried to have it loop while it was true until the user hit 4 to exit in which case it would turn it to false but that didn't work. I also tried adding a while loop to the function of showMenu but that also didn't work. I know it must be something simple I just can't catch it. gggrrrr.

#include "stdafx.h"
#include <iostream>
#include <iomanip> 

using namespace std; 

enum transType { SETUP=1, DEPOSITE, WITHDRAW, EXIT};

int showMenu(double balance);
double transaction(double amount, double balance, transType trans);

int menuSwitch; 
int quit=0; 

int _tmain(int argc, _TCHAR* argv[]){

    int amount=0,balance=0; 
    while(quit!=4){

    showMenu(balance);
    switch (menuSwitch){
        case DEPOSITE:
            cout<<"Enter the amount of deposit: ";
            cin>>amount;
            cout<<"Your current balance is: "<<transaction(amount,balance,DEPOSITE)<<endl<<endl;
            break;
        case WITHDRAW:
            cout<<"Enter the amount of withdraw: ";
            cin>>amount; 
            if(amount>balance){
                cout<<"*** Insufficient funds."<<"Your current balance is: "<<transaction(amount,balance,WITHDRAW)<<endl<<endl; 
            }
            else cout<<"Your current balance is: "<<transaction(amount,balance,WITHDRAW)<<endl<<endl;
            break;
        case EXIT:
            cout<<"Have a Nice Day."<<endl;
            quit=4;
            break;

    }

    return 0;
}
}
int showMenu(double balance){
    // while(quit==true){
    cout<<"Your Online Checking Account System"<<endl;
    cout<<"-------------------------------------------"<<endl; 
    cout<<"Select an option:"<<endl<<endl; 
    cout<<"  1. Set up the account."<<endl; 
    cout<<"  2. Deposit Funds into your Account."<<endl; 
    cout<<"  3. Withdraw Funds out of your Account."<<endl; 
    cout<<"  4. Exit"<<endl; 
    cout<<endl<<">>";
    cin>>menuSwitch;
    switch (menuSwitch){
        case SETUP:
            cout<<"Enter the balance: ";
            cin>>balance;
            cout<<endl<<"Your current balance is: "<<balance<<endl<<endl;
            break; 
    }

    return balance;
    // }
}
double transaction(double amount, double balance, transType trans){
    double withdraw = balance-amount;
    double deposite = balance+amount;
    if(trans=DEPOSITE){
        return deposite; 
    }
    else
        return withdraw; 





}
    //return balance; 
1
  • 2
    Unrelated to your question, there is at least one additional major bug here: if(trans=DEPOSITE) isn't a comparison but rather an assignment. Commented Feb 23, 2013 at 8:27

1 Answer 1

6

You return 0 within the switch brackets, ie inside the while loop. Change it so that you return 0 outside of the while loop.

Sign up to request clarification or add additional context in comments.

1 Comment

Yup, that's the correct answer. It's not that the loop doesn't work, it's that the function is ended prematurely. Good catch, I was still looking for the error myself.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.