该程序的目的是取一个美元金额并打印出将要退还的票据数量,以最有效地提供该金额以及剩余的零钱。 (即$ 523.33 = $ 50 x 10 / $ 20 x1 / $ 1 x 3 / .33剩余)。它应该工作,除了我在附件图像中得到的错误之外。我已经尝试过每次铸造的迭代,但是没有任何效果。
#include <iostream>
using namespace std;
int main()
{
double withdrawAmount; //declare variable to store use input for desired withdraw amount
do { //Ask for valid user input
cout << "Please enter an amount to withdraw from yor account" << endl;
cin >> withdrawAmount; //save user input into withdrawAmount variable
} while (withdrawAmount < 1);
//Print greatest # of bills that can be taken from the withdrawlAmount
cout << "$50 bills :"<< (int) withdrawAmount / 50 << endl;
//Print number of $50 bills
(int) withdrawAmount %= 50;
cout << "$20 bills: " << (int) (withdrawAmount %= 50) / 20 << endl;
//Print number of $20 bills
(int) withdrawAmount %= 20;
cout << "$10 bills: " << (int) (withdrawAmount %= 20) / 10 << endl;
//Print number of $10 bills
(int)withdrawAmount %= 10;
cout << "$5 bills: " << (int) (withdrawAmount %= 10) / 5 << endl;
//Print number of $5 bills
(int)withdrawAmount %= 5;
cout << "$1 bills: " << (int) (withdrawAmount %= 5) / 1 << endl;
//Print number of $1 bills
(int) withdrawAmount %= 1;
cout << "Remaining: " << withdrawAmount / 1 << endl;
return 0;
}
答案 0 :(得分:2)
(int) withdrawAmount %= 50;
应该替换为
withdrawAmount = std::fmod(withdrawAmount, 50);
与其他值相同。 (不要忘记#include <cmath>
)。
作为替代:
double input; //declare variable to store use input for desired withdraw amount
do { //Ask for valid user input
cout << "Please enter an amount to withdraw from yor account" << endl;
cin >> input; //save user input into withdrawAmount variable
} while (input < 1);
int withdrawAmount = input; // rounded toward 0.
std::cout << "$50 bills :"<< withdrawAmount / 50 << std::endl;
withdrawAmount %= 50;
// And so on...
// Final remaining
std::cout << "Remaining: " << input - int(input) << std::endl;