问题:
给我零钱。执行一个程序,指导出纳员如何进行更改。该程序有两个输入:应付金额和从客户收到的金额。展示顾客应该得到的美元、硬币和便士。
到目前为止我所拥有的:
#include <iostream>
using namespace std;
int main()
{
double amount_due;
double amount_recieved;
cout << "Enter amount due: " << endl;
cin >> amount_due;
cout << "Enter amount received: ";
cin >> amount_recieved;
int change = amount_recieved - amount_due;
int dollar = 100;
int quarters = 25;
int dimes = 10;
int nickels = 5;
int pennies = 1;
//Return change in full dollars
cout << "dollars: " << change % 100 << endl;
//Return change in quarters
cout << "quarters: " << (change % 100) % 25 << endl;
//Return change in dimes
cout << "dimes: " << ((change % 100) % 25) % 10 << endl;
// Return change in nickels
cout << "nickels: " << (((change % 100) % 25) % 10) % 5 << endl;
//Return change in pennies
cout << "pennies: " << ((((change % 100) % 25) % 10) % 5) % 1 << endl;
system("pause");
return 0;
}我意识到还有一些其他的答案,但它们可能是高级的在我的代码中使用,我做错了什么?
发布于 2014-03-10 03:11:26
你想做的和收银员一样。
首先,确保更改被表示为整便士。
然后提供足够的美元,直到剩下的零钱少于一美元。然后转到硬币,然后是一角硬币,五分钱和便士。
所以在美元的情况下,伪代码应该是:
dollars = change / 100 # get integral number of dollars
change = change % 100 # and reduce change-left-to-go accordingly
print dollars, " dollars"然后,为了降低价值,将这种逻辑应用于其他硬币类型应该是一件简单的事情。
发布于 2014-03-10 03:12:30
有几个问题。首先,您要求用户输入值,但不要指定值是什么。如果用户输入一个不以便士为单位的数字,您将无法获得所期望的值。我希望这种投入应该以美元为单位。因此,首先,将change转换为:
change = int((amount_recieved - amount_due) * 100.0)下一步:
cout << "dollars: " << change % 100 << end;将返回其余的更改除以100,这不是您想要的。你只想把美元除以100。您还希望修改更改以避免重复此数学运算。
dollars = change / 100;
cout << "dollars: " << dollars << endl;
change -= dollars*100;从那里开始,代码的其余部分应该按照预期的方式工作,减去% 100部分。正如其他人在对这个问题的评论中所提到的,您的问题是由于没有首先考虑数学问题,而不是C++本身的任何错误。这会在任何语言中产生错误的结果,包括把它写成黑板上的数学。
发布于 2014-03-10 03:34:01
正如其他人所提到的,您没有完成完成此工作所需的步骤,这是重复的减法。是的,你从给出的金额中减去了价格,并决定了要给多少美元,但是你没有减去这些美元,给出了一个新的总数来确定多少个季度。
像这样的事情(假设你只花了几分钱):
change_left = customer_payment - original_cost;
//...
number of dollars = change_left / 100;
change_left = change_left - (100 * number of dollars); <-- where is this?现在你如何确定25美分的数量?您有一个名为change_left的“运行总计”,它被您当前给客户的更改所减少。你重复类似的步骤,得到硬币的数量,然后是一角硬币,镍币等等,即除以25,然后减去一个新的"change_left“的硬币数。然后重复10次得到一角硬币,5次得到硬币的数量,等等。
所以,问题不在于C++ --问题是,你没有把它看作是一个离散的一系列步骤,从而最终达到一个目标。
https://stackoverflow.com/questions/22291356
复制相似问题