C++银行程序不工作堆栈溢出
C++ Bank program not working stack overflow
我试图用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"
}
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 以下代码如何工作以每次为唯一调用堆栈唯一实例化模板函数?
- 使用 std::map 的递归堆栈分配如何工作?
- 访问其他线程堆栈变量如何在C++中工作?
- 可以作为固定大小(堆栈)和动态大小(堆)工作的数组封装程序
- 分段堆栈如何工作
- C++银行程序不工作堆栈溢出
- 递归数独求解器几乎可以工作,但空网格的堆栈溢出
- 堆栈内存是如何工作的,或者函数变量是如何在堆栈上分配和访问的
- C++基于堆栈的构造函数/析构函数无法按预期工作
- 如何使堆栈在函数调用中工作
- 工作线程中堆栈溢出时的信息性退出
- 迭代器不是可取消引用的堆栈(表达式树)和循环无法正常工作
- 在堆栈上"function calls"工作?
- msvc++说变量周围的堆栈正在损坏,但程序工作
- 使C函数指针与C++中基于C样式堆栈的调用机制一起工作
- 这种从堆栈中删除元素的方法是如何工作的