#c
#c
Вопрос:
Напишите программу на C для подсчета наличных в ящике кассового аппарата. Вы должны посчитать количество банкнот каждого достоинства в ящике. Вызовите функцию для определения суммы денег в каждом номинале, приняв номинал и количество купюр и вернув сумму. Функция также может принимать номер каждого номинала монеты и количество монет и возвращать сумму.
Ваша программа должна записывать каждый номинал, количество купюр / монет, сумму в долларах каждой и общую сумму денег в ящике.
Записывайте как на экран, так и во внешние данные. Формат является:
Denomination Number Amount
------------------------------
.
.
.
.
.
.
.
------------------------------
Total $
int main() {
setprecision (2);
string d;
int t;
int tpenny;
int tnickel;
int tdime;
int tquarter;
int tone;
int tfive;
int tten;
int ttwenty;
int tfifty;
int thundred;
double penny;
double nickel;
double dime;
double quarter;
double one;
double five;
double ten;
double twenty;
double fifty;
double hundred;
cout << "Enter denomination and amount of bills/coins" << endl;
cout << "(i.e. 'penny 5' = 0.05c, 'quarter 3' = 0.75c, 'twenty 2' = $40.00)" << endl;
cout << "When all amounts have been entered, enter 'done'" << endl;
while (d != "done") {
double total = penny nickel dime quarter one five ten twenty hundred;
cin >> d;
if (d == "done") {
cout << "Denomination " << "Number " << "Amount" << endl;
cout << "-----------------------------------" << endl;
cout << "Penny: " << tpenny << " " << "$" << penny << endl;
cout << "Nickel: " << tnickel << " " << "$" << nickel << endl;
cout << "Dime: " << tdime << " " << "$" << dime << endl;
cout << "Quarter: " << tquarter << " " << "$" << quarter << endl;
cout << "One: " << tone << " " << "$" << one << endl;
cout << "Five: " << tfive << " " << "$" << five << endl;
cout << "Ten: " << tten << " " << "$" << ten << endl;
cout << "Twenty: " << ttwenty << " " << "$" << twenty << endl;
cout << "Fifty: " << tfifty << " " << "$" << fifty << endl;
cout << "Hundred: " << thundred << " " << "$" << hundred << endl;
cout << "-----------------------------------" << endl;
cout << "Total: " << "$" << total << endl;
}
else {
cout << "Enter additional currency. (if done, type 'done')" << endl;
cin >> t;
if (d == "penny") {
tpenny = t;
penny = value (d, t);
}
if (d == "nickel") {
tnickel = t;
nickel = value (d, t);
}
if (d == "dime") {
tdime = t;
dime = value (d, t);
}
if (d == "quarter") {
tquarter = t;
quarter = value (d, t);
}
if (d == "one") {
tone = t;
one = value (d, t);
}
if (d == "five") {
tfive = t;
five = value (d, t);
}
if (d == "ten") {
tten = t;
ten = value (d, t);
}
if (d == "twenty") {
ttwenty = t;
twenty = value (d, t);
}
if (d == "fifty") {
tfifty = t;
fifty = value (d, t);
}
if (d == "hundred") {
thundred = t;
hundred = value (d, t);
}
}
}
return 0;
}
Способ, которым я написал свой код на данный момент, работает, но только если для каждой отдельной валюты введено значение. Например, если я не ввожу значение для пяти, моя сумма равна какому-то сумасшедшему числу, а значение по умолчанию для числа не равно 0.
У вас есть какие-либо идеи о том, как это исправить? Также value — это функция, которая считывает строку и значение int (например, 5 пенни) и возвращает денежное значение.
Комментарии:
1. Это классическое задание, используемое для обучения вас ошибкам с плавающей запятой. Поскольку вам не нужно иметь дело с долями цента, я бы предложил провести рефакторинг вашей программы, чтобы использовать целочисленные центы вместо плавающих или двойных долларов. На этом сайте приведены некоторые основы ошибок с плавающей запятой: 0.30000000000000004.com
2. Продолжай и инициализируй свои переменные безопасным начальным значением.
Ответ №1:
Вы пробовали инициализировать все ваши объявленные переменные равными 0? Некоторые языки / наборы компиляторов не пытаются думать, что вам нужно значение 0 для новых переменных, и вы собираетесь получить все, что находится в этой ячейке памяти из предыдущего.
Комментарии:
1. Поскольку язык помечен как C , я бы изменил some в некоторых языках / компиляторе на most.
2. Спасибо. Idk, почему я не подумал инициализировать переменные, когда я их объявлял, но теперь это работает!