在大学里给出了以下练习,但最后一点不能理解。你如何将答案归结为音符。如果答案不能被50等分开怎么办? 我试过过模数和模数数学课......
当地街角店的老板Cashman先生遇到了麻烦 他的员工给出了错误的改变。为了解决这个问题,他已经做好了准备 你创建一个程序,允许工作人员进入 购物的总成本和客户支付的金额。该 程序应该计算并输出多少€50,€20,€10,€5 注意事项,以及为客户提供多少2欧元和1欧元的硬币作为变更。 Cashman先生拒绝处理小硬币,所以尽管工作人员 会员输入他所购物的购物成本的十进制值 所有的价格都降到最接近的欧元,并没有打扰 50c,20c,10c,5c,2c或1c硬币。
按照Cashmans先生的说法编写,编译和测试应用程序 要求并将类保存为MakingChange.java
答案 0 :(得分:1)
你有模数的正确方法,但也需要整数除法。我们来看看价值€164。
如果你将164除以50(用整数除法),你得到3.所以需要3€50注释。
如果您计算出164 modulo 50,那么最终会得到14,这是您取出这三张50欧元纸币后剩余的价值。那是你用下注20欧元的下一次迭代的起点。
然后你就继续这样做,直到你用完所有的货币类型。
换句话说,伪代码看起来像:
def workOutNotes (numEuros):
left = numEuros
// for 164: numXXs left
num50s = int (left / 50); left = left % 50; // 3 14
num20s = int (left / 20); left = left % 20; // 0 14
num10s = int (left / 10); left = left % 10; // 1 4
num5s = int (left / 5); left = left % 5; // 0 4
num2s = int (left / 2); left = left % 2; // 2 0
num1s = left; // 0
答案 1 :(得分:0)
我为你准备了一段C#代码,基本上将这些代码分解为越来越小的账单:
int changeAmount = 1300;
var bills = new int[] { 200, 100, 50, 20, 10, 5 };
var changeBills = new Dictionary<int, int>();
foreach(int bill in bills)
{
changeBills.Add(bill, changeAmount / bill);
changeAmount = changeAmount % bill;
}
代码会削减更改以适应账单,而不是购物金额。但我认为让你添加这个逻辑是公平的。