我最初尝试使用modulo但是没有按预期工作
它帮我回复了价值(我的老师和我都无法理解)
示例:
Uw krijgt 200 x 2 euro terug
Uw Krijgt 100 x 1 euro terug
Uw krijgt 50 x 50 cent terug
Etc...
该怎么做
我需要制作一个程序来计算你得到多少改变。
输入5
费用:2
输出:1x 2欧元,1x 1欧元,0 x 50美分,......
我的代码
int Prijs, Ingegooid;
int Cent1, Cent2, Cent5, Cent10, Cent20, Cent50, Euro, Euro2, Wisselgeld;
private void btnCola_Click(object sender, RoutedEventArgs e)
{
Cent10 = 10;
Cent20 = 20;
Cent50 = 50;
Euro = 100;
Euro2 = 200;
Ingegooid = Convert.ToInt32(txbIngegooid.Text);
Prijs = 190;
Wisselgeld = (Ingegooid * 100 - Prijs);
Euro2 = Wisselgeld / Euro2;
MessageBox.Show("Uw krijgt " + Euro2 + " aantal 2 euro stukken terug.");
Euro = (Wisselgeld-Euro2*200) / Euro;
MessageBox.Show("Uw krijgt " + Euro + " aantal 1 euro stukken terug.");
Cent50 = (Wisselgeld-Euro2*200-Euro*100) / Cent50;
MessageBox.Show("Uw krijgt " + Cent50 + " aantal 50 cent stukken terug.");
Cent20 = (Wisselgeld-Euro2*200-Euro*100-Cent50*50) / Cent20;
MessageBox.Show("Uw krijgt " + Cent20 + " aantal 20 cent stukken terug.");
Cent10 = (Wisselgeld-Euro2*200-Euro*100-Cent50*50-Cent20*20) / Cent10;
}
答案 0 :(得分:1)
您不一定需要模数。 在这种情况下,它实际上可能会产生误导。 示例:90美分: 1种可能的解决方法:
1 * 50c + 2 * 20c。 另一种方式是: 4 * 20c + 1 * 10c。
如果你想尽可能使用最大的硬币你可以这样做,如果你真的想: 10centAmmount =(更改%50)%20; 在这种情况下 10centAmmount =(90%50)%20; (90%50 = 40; 40%20 = 0 - >你不需要任何10美分硬币) 从最大的硬币到最小的硬币工作在这里更有意义。 我还建议减去你已经使用过的硬币。由于代码变得“不那么拥挤”
Euro2 = change/200;
change -= Euro2 * 200
Euro1 = change/100
change -= Euro1 * 100
...
模数的用例是确定一个数字是否可以被任何其他数字分割。 例如:
if (a % 4 == 0) {
print "a can be devided by 4";
此外,代码有点令人困惑。您使用Euro2作为欧元硬币的分数,但后来您用它来计算2欧元硬币的数量。如果您使用不同的变量,那将会有点混乱。您还可以将常量用于您永远不需要更改的值,例如2欧元硬币的分数。
希望这会有所帮助。