Система Basi c ca sh в C ++ - PullRequest
       7

Система Basi c ca sh в C ++

0 голосов
/ 24 января 2020

В приведенном ниже коде у меня есть некоторые ошибки, и я не знаю, почему это не работает.

Я использовал 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;
}

1 Ответ

3 голосов
/ 24 января 2020

int содержит только целое число значения. 0.05 не является целочисленным значением. У вас может возникнуть соблазн использовать double значения, которые, вероятно, подходят для вашей простой задачи; однако, они обычно имеют ошибки округления, а это то, что вы на самом деле не хотите иметь с валютными значениями.

Лучшим решением будет использование целых чисел. Вам нужно будет определить 1 как наименьшую возможную единицу (например, 1 цент), что означает, что все ваши значения будут в процентах. Вам нужно будет написать дополнительный код, чтобы иметь возможность вводить и отображать значения в долларах, а не в центах.

...