2013-02-23 3 views
0

Я не могу понять, почему это в то время, когда цикл прерывается. Это делалось хорошо, прежде чем я переместил код. Теперь у меня есть что-то еще работающее, и оно просто не зацикливается. Я также попытался сделать quit bool установленным в true и попытался выполнить цикл, пока он был прав до тех пор, пока пользователь не ударит 4, чтобы выйти, и в этом случае он превратит его в false, но это не сработало. Я также попытался добавить цикл while к функции showMenu, но это также не сработало. Я знаю, что это должно быть что-то простое, я просто не могу его поймать. gggrrrr.Пока Loop не будет цитировать C++

#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; 
+2

Не связанный с вашим вопросом, существует, по крайней мере, одна дополнительная основная ошибка здесь: 'if (trans = DEPOSITE)' не является сопоставлением, а скорее назначением. – SomeWittyUsername

ответ

6

Вы возвращаете 0 в скобки переключателя, то есть внутри цикла while. Измените его так, чтобы вы возвращали 0 вне цикла while.

+0

Да, это правильный ответ. Дело не в том, что цикл не работает, а в том, что функция заканчивается преждевременно. Хороший улов, я все еще искал ошибку. –

+0

Спасибо, что сработал. – Nonlin

Смежные вопросы