#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;
}