2

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

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

4

1 回答 1

2

最简单的解决方法是将数字作为浮点数,然后将其乘以 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);
}
于 2012-09-15T02:03:49.327 回答