Я пытаюсь создать простую программу сортировки изменений, все нормально функционирует для части, которая предполагает обнаружение кварталов.
Пример токового выхода:
The amount you entered is: 52.50
You have this many Fifty dollars: 1
You have this many Ten dollars: 0
You have this many One: 2
You have this many Quarters: 0
Желаемый результат:
The amount you entered is: 52.50
You have this many Fifty dollars: 1
You have this many Ten dollars: 0
You have this many One: 2
You have this many Quarters: 2
Код:
#include <iostream>
using namespace std;
const int FIFTY = 50;
const int TEN = 10;
const int ONE = 1;
const double QUARTER = 0.25;
int _tmain(int argc, _TCHAR* argv[])
{
int change;
cout << "Enter the amount of money in your wallet: ";
cin >> change;
cout << endl;
cout << "The amount you entered is: " << change << endl;
cout << "The number of Fifty dollars to be returned is: " << change / FIFTY << endl;
change = change % FIFTY;
//
cout << "The number of Ten dollars to be returned is: " << change / TEN << endl;
change = change % TEN;
//
cout << "The number of One dollars to be returned is: " << change / ONE << endl;
change = change % ONE;
//
cout << "The number of Quarters to be returned is: " << change / QUARTER << endl;
change = change % QUARTER;
return 0;
}
2 ошибки, которые я получаю:
Error 1 error C2297: '%' : illegal, right operand has type 'double'
Error2 IntelliSense: expression must have integral or unscoped enum type
Ваша переменная change
- тип int
, поэтому она не будет хранить 52.50
вообще.
Он прочитает 52
затем остановится.
Кроме того, вы не можете использовать значения с плавающей запятой в операторе %
.
Я бы предложил прочитать значение в виде двойника, умножив его на сотню, возможно, добавив небольшую дельту (например, 0.001
), чтобы избежать потенциальных проблем с плавающей точкой, а затем поместив ее в int
. Другими словами, сделайте это целое число центов.
Затем используйте int
для выполнения вычислений.