cout << "Your change is " << change << ". Here's your change:";
char q = '@';
double ccounter = 0;
while(ccounter <= (change - .24)){
cout << q;
ccounter = ccounter + .25;
}
char d = '^';
while(ccounter <= (change - .09))
{
cout << d;
ccounter = ccounter + .10;
}
char n = '&';
while(ccounter <= (change - .04)){
cout << n;
ccounter = ccounter + .05;
}
char p = '*';
while(ccounter <= change){
cout << p;
ccounter = ccounter + .01;
}
return 0;
}
一旦您的客户向您支付的金额大于或等于1.87,请使用上面列出的符号给他们更改。因此,例如,如果您的客户以5美元付款,则应打印出来:
Your change is 3.13. Here’s your change: $$$^***
首先是代码第二个块是提示符。
当用户输入3以表示他们想支付的一切都很好时,但是当4变为0.13时,4真的应该是3个便士图标。 任何帮助或建议将不胜感激!
谢谢你们:)[ * ] = Penny (1 cent)
[ & ] = Nickel (5 cents)
[ ^ ] = Dime (10 cents)
[ @ ] = Quarter (25 cents)
[ $ ] = 1 dollar
答案 0 :(得分:0)
您的循环终止条件似乎都有一次性错误。将代码编写为:
可能更清楚cout << "Your change is " << change << ". Here's your change:";
char q = '@';
double ccounter = 0;
while((change - ccounter) >= 0.25)
{
cout << q;
ccounter = ccounter + .25;
}
char d = '^';
while((change - ccounter) >= 0.10)
{
cout << d;
ccounter = ccounter + .10;
}
char n = '&';
while((change - ccounter) >= 0.05)
{
cout << n;
ccounter = ccounter + .05;
}
char p = '*';
while((change - ccounter) >= 0.01 )
{
cout << p;
ccounter = ccounter + .01;
}
return 0;
}
答案 1 :(得分:0)
循环在错误的时间结束,因为ccounter
变量正在从浮点舍入累积错误。如果您计算2 + 0.1 + 0.01 + 0.01 + 0.01
,则会得到2.1299999999999994。您应该更改所有内容以使用整数数学,即以213美分的计数器开始,然后从中减去25,10,5和1。如果坚持使用整数数学,它将可靠地工作。