【问题标题】:Basic cash system in C++C++ 中的基本现金系统
【发布时间】:2020-05-10 06:26:19
【问题描述】:

在下面的代码中,我有一些错误,我不知道为什么它不起作用。

我使用fmod 来计算小数,但我在它给你 0.10 和 0.05 $ 的部分中遇到了一些错误,而且大多数时候我从来没有得到我应该回馈的好金额,如果有。

#include<iostream>
#include <cmath>
using namespace std;

int main() 
{

    int iAmount_due = { 0 };

    int iGiven_money = { 0 };

    int iMoney_back;

    iMoney_back = iGiven_money - iAmount_due;


    cout << "Enter the amount due please: " << endl;

    cin >> iAmount_due;

    cout << "Enter the amount given please: " << endl;

    cin >> iGiven_money;


    if (iGiven_money >= iAmount_due) {

       iMoney_back = iGiven_money - iAmount_due;

        cout << "We will give you : " << iMoney_back << " $ back" << endl;

    }

    else {

        cout << "No money back" << endl;

    }



    if (iMoney_back >= 100) {

        cout << "You will receive: " << iMoney_back % 100 << " x 100$" << endl;

    }

    else {

        cout << "No 100$ bill" << endl;

    }



    if (iMoney_back >= 50) {

        cout << "You will receive: " << iMoney_back % 50 << " x 50$" << endl;

    }

    else {

        cout << "No 50$ bill" << endl;

    }


    if (iMoney_back >= 20) {

        cout << "You will receive: " << iMoney_back % 20 << " x 20$" << endl;

    }

    else {

        cout << "No 20$ bill" << endl;

    }


    if (iMoney_back >= 10) {

        cout << "You will receive: " << iMoney_back % 10 << " x 10$" << endl;

    }

    else {

        cout << "No 10$ bill" << endl;

    }


    if (iMoney_back >= 5) {

        cout << "You will receive: " << iMoney_back %  5  << " x 5$" << endl;

    }

    else {

        cout << "No 5$ bill" << endl;

    }


    if (iMoney_back >= 0.25) {

        cout << "You will receive: " << fmod (iMoney_back, 0.25) << " x 0.25$ " << endl;

    }

    else {

        cout << "No 0.25$ " << endl;

    }


    if (iMoney_back >= 0.10) {

        cout << "You will receive: " << fmod (iMoney_back, 0.10) << " x 0.10$ " << endl;

    }

    else {

        cout << "No 0.10$ " << endl;

    }


    if (iMoney_back >= 0.05) {

        cout << "You will receive: " << fmod (iMoney_back, 0.05) << " x 0.05$ " << endl;

    }


    else {

        cout << "No 0.05$ " << endl;

    }


    return 0;
}

【问题讨论】:

  • 您能否举例说明您的输入、预期输出和实际输出来说明问题?
  • 当你写代码时,从一些小而简单的完美工作开始,然后构建。在这里,您尝试一次编写全部内容,一个完成所有事情的大程序,但它不起作用,您不知道问题出在哪里。重新开始,也许使用一个报告 0.05 美元的程序,并且在完美运行之前不要添加更多功能。

标签: c++ computer-science


【解决方案1】:

int 仅保存 整数 值。 0.05 不是整数值。您可能很想使用 double 值,而不是可能适用于您的简单问题;但是,它们通常存在舍入错误,这是您真的不希望货币值出现的问题。

更好的解决方案是仍然使用整数。您需要将 1 定义为可能的最小单位(例如 1 美分),这意味着您的所有值都将以美分为单位。您需要编写额外的代码才能以美元而不是美分的形式输入和显示值。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 2015-04-16
    • 2013-06-04
    • 2011-02-14
    • 2011-04-02
    • 2014-10-20
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多