C ++ Bank программа не работает переполнение стека

Я пытался создать банковскую программу на 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();
}

Пожалуйста помоги!

1

Решение

Я вижу несколько проблем с вашим кодом.

Во-первых, вы вызываете функцию prompt() внутри функции, вызывающей его рекурсивный вызов Сам снова и снова, пока у вас не будет переполнение стека.

Во-вторых, вы храните свой ввод внутри bool. Вы, вероятно, хотели использовать std::string

В-третьих, внутри вашего оператора if вы не проверяете, равно ли значение, а устанавливаете его, когда используете = оператор. Если вы хотите проверить, равны ли эти два значения, используйте == знак.

В-четвертых, ваше использование if утверждение неверно. Если вы проверяете значение для нескольких условий, вы должны поместить их все внутри if else все следуют друг за другом. То, что вы делаете, это разбивает их на несколько операторов if, каждое из которых следует условию else, которое печатает Unknown Command.]

Видя, как выглядит домашнее задание, я не дам вам полный код, чтобы дать вам возможность учиться. Но если вы исправите вышеприведенные пункты, то вы будете на пути к функциональной программе.

6

Другие решения

Ваша структура должна быть больше похожа на эту

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