用于确定使用char图标的变化的c++数学计算

C++ math calculation for determining change using char icons

本文关键字:变化 c++ 计算 图标 char 用于      更新时间:2023-10-16
    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。
任何帮助或建议将非常感激!

谢谢大家:)

[ * ] = Penny (1 cent)
[ & ] = Nickel (5 cents)
[ ^ ] = Dime (10 cents)
[ @ ] = Quarter (25 cents)
[ $ ] = 1 dollar

循环在错误的时间结束,因为ccounter变量正在积累浮点舍入的错误。如果计算2 + 0.1 + 0.01 + 0.01 + 0.01,得到2.1299999999999994。你应该将所有内容改为使用整数数学,即从213美分的计数器开始,然后从中减去25、10、5和1。如果您坚持使用整数数学,它将可靠地工作。

您的循环终止条件似乎都有一次性错误。这样写代码可能更清楚:

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;
}