Вы не правильно следуете инструкциям. Вы не проверяете ввод пользователя во втором приглашении. Полностью избавьтесь от петли while (withdrawTrial < 1)
. Подскажите один раз и подтвердите. Если amount
больше, чем доступное balance
, повторите запрос и повторите проверку. Если amount
все еще больше, чем доступное balance
, выйдите. Никаких циклов не требуется (если только вы не хотите проверить, что пользователь фактически вводит число с плавающей точкой и ничего больше).
Кроме того, вы не должны вызывать menuBoard()
внутри самого withdrawAmount()
, вам следуетвызывать его после выхода withdrawAmount()
.
double inputDollars(const char *prompt){
double value;
do {
cout << prompt << ": $";
if (cin >> value)
break;
cout << endl;
cout << "Invalid Input!" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
while (true);
return value;
}
double withdrawAmount(int pin, double balance[]){
double amount;
system("cls");
cout << "-----------------------------------------" << endl;
cout << "\tWELCOME TO EDON ATM" << endl;
cout << "-----------------------------------------" << endl;
cout << endl;
amount = inputDollars("Please enter amount to be withdrawn");
if (balance[pin] < amount){
cout << endl;
cout << "Insufficient Balance!" << endl;
cout << "Your balance is: $" << balance[pin] << endl;
cout << endl;
amount = inputDollars("Please enter amount to be withdrawn");
if (balance[pin] < amount){
cout << endl;
cout << "Insufficient Balance!" << endl;
return balance[pin];
}
}
balance[pin] -= amount;
return balance[pin];
}
...
double balances[N];
int pin;
...
withdrawAmount(pin, balances);
menuBoard();