使用char图标确定更改的C ++数学计算

时间:2015-09-21 04:32:36

标签: c++ math char

    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

2 个答案:

答案 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。如果坚持使用整数数学,它将可靠地工作。