c++ - 在C++硬币找零算法中计算错误

标签 c++ algorithm

所以,我正在尝试构建这个程序,我假设从用户那里获取输入,即总金额和已支付金额。现在,余额应该被分解为 10 美元、5 美元、1 美元、25 美分、10 美分和 5 美分。但下面的程序/代码告诉我余额中的 25 美分、10 美分和 5 美分的总数,而不是剩余的。例如 。如果总金额为 5.76,支付金额为 $15,则应显示零 $10、一 $5、4 $1、零 $.25、2 $.10、零 $.05 和四 $.01。

请告诉我这里的代码有什么问题?

最佳答案

最简单的解决方法是获取 float 形式的数字,然后将其乘以 100,然后将其保存为 int。

#include <iostream>

using namespace std;

int main ( )
{
    float userNUmber;
    int change, quarters, dimes, nickels, pennies; // declare variables
    cout <<"Enter the amount of money: ";
    cin >> userNUmber; // input the amount of change
    change = userNUmber * 100;
    quarters = change / 25; // calculate the number of quarters
    change = change % 25; // calculate remaining change needed
    dimes = change / 10; // calculate the number of dimes
    change = change % 10; // calculate remaining change needed
    nickels = change / 5; // calculate the number of nickels
    pennies = change % 5; // calculate pennies

    cout << "\nQuarters: " << quarters << endl; // display # of quarters
    cout << " Dimes: " << dimes << endl; // display # of dimes
    cout << " Nickels: " << nickels << endl; // display # of nickels
    cout <<" Pennies: " << pennies << endl; // display # of pennies
    system("Pause");
    return (0);
}

也可以在循环中执行类似的操作

#include <iostream>
#include <vector>
#include <string>
using namespace std;


int main ( )
{
    float userNUmber;
    int change, quarters, dimes, nickels, pennies; // declare variables

    cout <<"Enter the amount of money: ";
    cin >> userNUmber; // input the amount of change
    change = userNUmber * 100;

    vector<int> coins(4, 0);
    coins[0] = 25; coins[1] = 10; coins[2] = 5; coins[3] = 1;
    vector<string> coinsName(4, "");
    coinsName[0] = "Quaters"; coinsName[1] = "Dimes"; coinsName[2] = "Nickels"; coinsName[3] = "Pennies";

    for(size_t i = 0; i < coins.size(); ++i)
    {
        int numberOfCoins = change / coins[i]; // calculate the number of quarters
        change = change % coins[i]; // calculate remaining change needed
        cout << coinsName[i] << ": " << numberOfCoins << endl; // display # of quarters
    }
    system("Pause");
    return (0);
}

关于c++ - 在C++硬币找零算法中计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433878/

相关文章:

algorithm - 文档分类,使用遗传算法

python - 没有内置插件的选择排序 Python

c++ - 在更接近于零的有限大小数组中选择 float 的有效方法是什么?

c++ - 子弹头车轮落后和错误的底盘俯仰方向

c++ - Boost:如何在方法内部反序列化?

c++ - 检查二元迷宫是否可通过受限移动解决的有效算法

c++ - Serial.println() 在哪里定义..?我可以查看它的源代码吗?

algorithm - 通用信元率算法相对于漏桶算法的优势

java - 旅行推销员/车辆路线用例的最佳实现

javascript - 为什么这个对象没有被正确解析?