C ++硬币转换硬件

时间:2019-07-22 19:17:48

标签: c++

我的代码的最后一部分似乎没有运行

#include <iostream>
#include <cmath>

int main() {

    int dollars;
    int cents;

    std::cout << "Please enter your amount in the format of dollars and cents separated by a space: ";
    std::cin >> dollars >> cents;

    double quarters = dollars/0.25;
    int whole_quarters = (int) quarters;

    double dimes = cents/10;
    int whole_dimes = (int) dimes;

    double nickels = (dimes - whole_dimes)/0.5;
    int whole_nickels = (int) nickels;

    int pennies = std::fmod((dimes - whole_dimes),0.5);

    std::cout << dollars << " dollars and " << cents << " cents are:\n";
    std::cout << whole_quarters << " quarter " << whole_dimes << " dimes " << whole_nickels << " nickels " << pennies << " pennies ";
    return 0;
}

我输入了2 58,但输出结果为8个季度5个角钱0个镍币0个便士 应该是1个镍币和3个便士 有人可以告诉我我想念什么吗?

1 个答案:

答案 0 :(得分:1)

更好的答案是10个季度,1个小节,3个便士。就是那样。

我不会使用这种特定算法,尽管扫描它并不能告诉我明显的问题。我会通过抛弃角钱(双精度)并验证它是否符合您的想法进行调试,然后刻痕(双精度)并确保该值也有意义。

我会做这样的事情:

int dimes = cents / 10;
int nickles = (cents % 10) / 5;
int pennies = (cents % 5);

如果分是58,则点数= 5,分%10是8,除以5是1,分%5是3。

但是,如果您对编程很认真,那么值得在代码中放入大量cout语句,并确保值正在变成您认为的样子。

此外,如果您不注释输入内容而将代码注释掉并对测试数据进行硬编码,则这样做会更快。通过这种方式获得适当的测试结果后,请切换回要求输入。