1

我试图用 C++ 编写一个银行程序,您可以在其中查看钱包和银行帐户中的金额,以及存款和取款。当我尝试运行它时,它允许我输入,但是当我输入任何内容时,它会Money in Wallet: 20一次又一次地重复,直到我得到堆栈溢出,我认为这有点讽刺,将其发布在一个名为 Stack Overflow 的网站上。

到目前为止,这是我的代码:

#include <iostream>
using namespace std;

float money= 20.00;
float account=100.00;
float amount;
bool cmd;

void wallet()
{
    cout<<"Money in Wallet: "<<money<<endl;
}


void bank()
{
    cout<<"Money in Bank: "<<account<<endl;
}


void deposit()
{
    cout<<"How much do you want to deposit?: ";
    cin>>amount;
    if (money>=amount)
    {
        account = account+amount;
        money = money-amount;
    }
    else
    {
        cout<<"You don't have enough money!\n";
    }
}


void withdraw()
{
    cout<<"How much do you want to withdraw?: ";
    cin>>amount;
    if(account>=amount)
    {
        money = money+amount;
        account = account-amount;
    }
    else
    {
        cout<<"There isn't enough money in your bank account!\n";
    }
}


void prompt()
{
    cmd="null";
    cout<<">";
    cin>>cmd;
    if (cmd="wallet")
    {
        wallet();
        cmd="null";
        prompt();
    }
    else{
        cout<<"Unknown Command.";
        cmd="null";
        prompt();
    }
    if (cmd="bank")
    {
        bank();
    }
    else{cout<<"Unknown Command.";}
    if (cmd="deposit")
    {
        deposit();
    }
    else{cout<<"Unknown Command.";}
    if (cmd="withdraw")
    {
        withdraw();
    }
    else{cout<<"Unknown Command.";}
}


int main()
{
    prompt();
}

请帮忙!

4

2 回答 2

6

我可以看到您的代码存在多个问题。

首先,你在函数prompt()内部调用函数,导致它递归地一遍又一遍地调用它,直到你有一个stackoverflow

其次,您将输入存储在布尔值中。您可能打算使用std::string

第三,在 if 语句中,您不是在检查值是否相等,而是在使用=运算符时进行设置。如果要检查两个值是否相等,请使用==符号。

第四,你对if语句的使用是错误的。如果您要检查多个条件的值,则应将它们全部放在一起if else。您正在做的是将它们分成多个 if 语句,每个语句都遵循打印的 else 条件Unknown Command.]

看这看起来像家庭作业,我不会给你完整的代码给你一个学习的机会。但是,如果您解决了以上几点,那么您将走上拥有功能程序的道路。

于 2014-01-04T00:30:01.473 回答
0

你的结构需要更像这样

while(true)
{
  prompt();
  if(command == "quit")
     break;
  else if(command == "bank")
    bank();
  else if(.....)
....
  else
    cout << "bad command"
}
于 2014-01-04T01:01:10.113 回答