Функция для возврата баланса банковского счета

#c #string #function #int #cin

#c #строка #функция #int #cin

Вопрос:

Моя функция содержит строку и целые числа, но при ее запуске я получаю ошибку:

error: could not convert 'balance' from 'int' to 'std::string {aka std::basic_string<char>}'

Чего я пытаюсь достичь, так это написать программу, которая спросит, хотите ли вы «внести» или «снять». Затем программа запросит сумму в долларах (целочисленное значение). Напишите функцию ‘update_balance’, чтобы соответствующим образом изменить свой баланс. Если задана команда «внести», ваша функция должна добавить сумму в долларах к текущему балансу; если задана команда «снять», ваша функция должна вычесть сумму в долларах из текущего баланса.

Верните новый баланс после выполнения команды.

Мой текущий код таков:

 #include <iostream>
#include <string>
using namespace std;
//************************FUNCTION TO BE FIXED************************
void update_balance(string command, int dollars, int balance)
{
    if (command == "withdraw")
    {
        balance = balance - dollars;
    }
    else
    {
        balance = balance   dollars;
    }
}
//************************FUNCTION TO BE FIXED************************

int main()
{
    //the amount of money in your account
    int balance = 0;

    // Command that will tell your function what to do
    string command;
    cin >> command;

    // number of dollars you would like to deposit or withdraw
    int dollars = 0;
    cin >> dollars;

    balance = update_balance(balance, dollars, command);

    // Prints out the balance
    cout << balance << endl;

    return 0;
}
  

Комментарии:

1. Вы перепутали порядок параметров и ожидаемый возврат по сравнению с / void. Я имею в виду, balance = update_balance(balance, dollars, command); не совпадает void update_balance(string command, int dollars, int balance) .

2. Вы все еще не позаботились о возвращаемом значении. Из вашего использования update_balance должен возвращать значение int. Поэтому вместо void update_balance(string command, int dollars, int balance) вам нужно int update_balance(string command, int dollars, int balance) И не забывайте return balance;

3. Я внес изменения, которые вы мне указали, и это сработало. Мне просто нужно выяснить, как пометить вашу помощь как отвеченную

4. Я только что понял, что это не ответ, а комментарий. Мой измененный код теперь имеет функцию как int update_balance(….), и она возвращает баланс. Большое вам спасибо за вашу помощь

Ответ №1:

Я обнаружил несколько ошибок. Вот мое предложение. Установите баланс = 500, а не 0. Изменить

 void update_balance(string command, int dollars, int balance)
  

Для

 int update_balance(int balance, int dollars, string command)
  

Добавьте строку после цикла if-else.

 return balance;
  

Добавьте int balancen.

Изменить

 balance = update_balance(balance, dollars, command);
  

Для

 balancen = update_balance(balance, dollars, command);
  

Комментарии:

1. Последняя часть не нужна. Вы можете оставить это как есть balance .

Ответ №2:

Я бы предложил передавать аргументы по ссылке или указателям, что-то вроде этого:

 #include <iostream>
#include <string>
using namespace std;

void update_balance(string command, intamp; balance, int dollars)
{
    if (command == "withdraw")
        balance -= dollars;
    else
        balance  = dollars;
}

int main()
{
    //the amount of money in your account
    int balance = 0;

    // Command that will tell your function what to do
    string command;
    cin >> command;

    // number of dollars you would like to deposit or withdraw
    int dollars = 0;
    cin >> dollars;

    update_balance(command, balance, dollars);

    // Prints out the balance
    cout << balance << endl;

    return 0;
}