C++银行程序不工作堆栈溢出

C++ Bank program not working stack overflow

本文关键字:工作 堆栈 栈溢出 程序 C++      更新时间:2023-10-16

我试图用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();
}

请帮忙!

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

首先,您在函数内部调用函数prompt(),使其反复递归地调用它self,直到您有了stackoverflow。

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

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

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

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

您的结构需要更像这个

while(true)
{
prompt();
if(command == "quit")
break;
else if(command == "bank")
bank();
else if(.....)
....
else
cout << "bad command"
}