C ++ базовое преобразование, а затем добавление пользовательских данных

Это моя попытка найти решение, которое я написал для упражнения Бьярна Страуструпа. Принципы программирования и C ++ книга. К сожалению, раздел, который я написал, чтобы дать общую сумму денег от введенных монет, не работает так, как мне бы хотелось!

Быстрый ответ, и я был бы очень признателен, но если бы у кого-то тоже было время, могли бы они помочь мне ввести некоторую базовую проверку ошибок?

Я бы хотел, чтобы это работало после того, как требуется пользовательский ввод (например, сколько у вас 20p?), Чтобы проверить, ввел ли пользователь int, Если нет, предоставьте тонкое сообщение об ошибке и шанс повторить тот же вопрос, а не останавливать программу или запускать программу с самого начала!

#include "../../std_lib_facilities.h"
int main() {
int one, ten, twenty, fifty, one_pound, two_pound;
double amount;
amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound + (two_pound * 2);
cout << "Welcome to the change counter app!\nHow many 1p's do you have?\n";
cin >> one;
cout << "How many 10p's do you have?\n";
cin >> ten;
cout << "How many 20p's do you have?\n";
cin >> twenty;
cout << "How many 50p's do you have?\n";
cin >> fifty;
cout << "How many £1 coin's do you have?\n";
cin >> one_pound;
cout << "How many £2 coin's do you have?\n";
cin >> two_pound;
cout << "You have: " << one << " 1p coins!\n"<< "You have: " << ten << " 2p coins!\n"<< "You have: " << twenty << " 20p coins!\n"<< "You have: " << fifty << " 50p coins!\n"<< "You have: " << one_pound << " £1 coins!\n"<< "You have: " << two_pound << " £2 coins!\n"<< "The total amount of money you have is: " << amount << "\n";
}

-1

Решение

У тебя есть два проблемы:

Во-первых, в отсутствие циклов код выполняется сверху вниз. Это означает, что вы рассчитываете amount до Вы читаете вход.

Вторая проблема заключается в том, что при расчете amount (в настоящее время не в том месте) вы используете переменные one, ten, так далее. до они инициализированы. Неинициализированные локальные переменные будут иметь неопределенный значение, и их использование приведет к неопределенное поведение.

Простое решение обеих проблем состоит в том, чтобы переместить расчет amount в после вы прочитали ввод, но до ты пишешь вывод.

0

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

Проблема в том, что вы рассчитываете amount с неинициализированными переменными. Вам нужно рассчитать amount после того, как все переменные были инициализированы. Ваши переменные инициализируются только после всех cin заявления выполнены.

Вы должны двигаться

amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound +
(two_pound * 2);

после последнего cin заявление.

int main() {
int one, ten, twenty, fifty, one_pound, two_pound;
double amount;

cout << "Welcome to the change counter app!\nHow many 1p's do you have?\n";
cin >> one;
cout << "How many 10p's do you have?\n";
cin >> ten;
cout << "How many 20p's do you have?\n";
cin >> twenty;
cout << "How many 50p's do you have?\n";
cin >> fifty;
cout << "How many £1 coin's do you have?\n";
cin >> one_pound;
cout << "How many £2 coin's do you have?\n";
cin >> two_pound;

amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound + (two_pound * 2);
cout << "You have: " << one << " 1p coins!\n"<< "You have: " << ten << " 2p coins!\n"<< "You have: " << twenty << " 20p coins!\n"<< "You have: " << fifty << " 50p coins!\n"<< "You have: " << one_pound << " £1 coins!\n"<< "You have: " << two_pound << " £2 coins!\n"<< "The total amount of money you have is: " << amount << "\n";
}
0

По вопросам рекламы [email protected]