[英]C++ Bank program not working stack overflow
我試圖用C ++編寫一個銀行程序,您可以在其中查看錢包,銀行帳戶中的金額以及存入和提取的金額。 當我嘗試運行它時,它可以讓我輸入內容,但是當我輸入任何內容時,它會Money in Wallet: 20
反復顯示Money in Wallet: 20
一次又一次,直到出現堆棧溢出,我認為這很具有諷刺意味,將其發布在一個名為堆棧溢出。
到目前為止,這是我的代碼:
#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()
,導致該函數反復遞歸調用自身,直到您擁有stackoverflow為止。
其次,將輸入內容存儲在布爾值中。 您可能打算使用std::string
第三,在if語句中,您不是在檢查值是否相等,而是在使用=
運算符時進行設置。 如果要檢查兩個值是否相等,請使用==
符號。
第四,您對if
語句的使用是錯誤的。 如果要檢查多個條件的值,則應將它們全部放在里面if else
所有其他條件都應緊隨其后。 您正在執行的操作是將它們分成多個if語句,每個if語句都遵循顯示“ Unknown Command.
的else條件Unknown Command.
]
看到這看起來像家庭作業,我不會給您完整的代碼來給您學習的機會。 但是,如果您解決了以上問題,那么您將可以使用功能程序。
您的結構需要更像這樣
while(true)
{
prompt();
if(command == "quit")
break;
else if(command == "bank")
bank();
else if(.....)
....
else
cout << "bad command"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.