Функция для вывода суммы из массива баланса - PullRequest
0 голосов
/ 23 октября 2019

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

Если баланс недостаточен, отображается предупреждающее сообщение вместе с балансом пользователя.

Пользователю предлагается ввести новую сумму во второй раз, если сумма равнаОК, операция снятия завершена, баланс обновлен, и отображается меню.

Если баланс все еще недостаточен, операция снятия прекращается и отображается меню.

Ниже приведен код, который работаетесли я попытаюсь ввести сумму, которая ниже баланса в первый раз. Но плохо обновляет баланс, если я ввожу правильную сумму со второй попытки.

double withdrawAmount(int pin, double balance[]){
    double amount;
    double newBalance = balance[pin];
    int withdrawTrial = 0;
    do{
        system("cls");
        cout << "-----------------------------------------" << endl;
        cout << "\tWELCOME TO EDON ATM" << endl;
        cout << "-----------------------------------------" << endl;
        cout << endl;
        cout << "Please enter amount to be withdrawn: $";
        cin >> amount;
        if (balance[pin] < amount){
            cout << endl;
            cout << "Insufficient Balance!" << endl;
            cout << "Your balance is: $" << balance[pin] << endl;
            cout << endl;
            while (withdrawTrial < 1){
                withdrawTrial++;
                cout << "Please enter amount to be withdrawn: $";
                cin >> amount;
            }
            if (withdrawTrial == 1){
                menuBoard();
                return newBalance;
            }
        }
        balance[pin] -= amount;
        newBalance = balance[pin];
    } while (amount < 0);
    return newBalance;
}

1 Ответ

0 голосов
/ 23 октября 2019

Вы не правильно следуете инструкциям. Вы не проверяете ввод пользователя во втором приглашении. Полностью избавьтесь от петли 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();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...