Need Help Please Cash Register C++

Hi,
I've been working on this program for approximately 2 weeks and I just can't do it, I'm a beginner it's really difficult for me and I don't know what to do anymore. The part where you supposed to get your cents back doesn't want to work and I really don't know why, I was trying to optimize as best as I can my code to have less code line but I'm not capable to do it. Some help would be very appreciate please.
Many Thanks in Advance.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
#include <math.h>
using namespace std;

int main() 
{

	double iAmount_due { 0 };

	double iGiven_money { 0 };

	double iMoney_back;	

	iMoney_back = iGiven_money - iAmount_due;

	int iMoney100 { 0 };
	int iMoney50  { 0 };
	int iMoney20  { 0 };
	int iMoney10  { 0 };
	int iMoney5   { 0 };
	int iMoney2   { 0 };
	int iMoney1   { 0 };
	int iCent25   { 0 }; 
	int iCent10   { 0 };
	int iCent5    { 0 };
	int iCent1    { 0 };

    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;
	
	}

       
	while (iGiven_money >= iAmount_due) {
	
		iMoney100 = iMoney_back / 100;
		iMoney_back = (int)iMoney_back % 100;

		cout << "You will get: " << iMoney100 << " X 100 $ " << endl;
	
		iMoney50 = iMoney_back / 50;
		iMoney_back = (int)iMoney_back % 50;

		cout << "You will get: " << iMoney50 << " X 50 $ " << endl;

		iMoney20 = iMoney_back / 20;
		iMoney_back = (int)iMoney_back % 20;

		cout << "You will get: " << iMoney20 << " X 20 $ " << endl;

		iMoney10 = iMoney_back / 10;
		iMoney_back = (int)iMoney_back % 10;

		cout << "You will get: " << iMoney10 << " X 10 $ " << endl; 

		iMoney5 = iMoney_back / 5;
		iMoney_back = (int)iMoney_back % 5;

		cout << "You will get: " << iMoney5 << " X 5 $ " << endl; 


		iMoney2 = iMoney_back / 2;
		iMoney_back = (int)iMoney_back % 2;

		cout << "You will get: " << iMoney2 << " X 2 $ " << endl; 
	
	    iMoney1 = iMoney_back / 1;
		iMoney_back = (int) iMoney_back % 1;

		cout << "You will get: " << iMoney1 << " X 1 $ " << endl;


		iCent25 = iMoney_back / 0.25;
		iMoney_back = fmod ((int)iMoney_back, 0.25);

		cout << "You will get: " << iCent25 << " X 0.25 $ " << endl;


		iCent10 = iMoney_back / 0.10;
		iMoney_back = fmod ((int)iMoney_back , 0.10);

		cout << "You will get: " << iCent10 << " X 0.10 $ " << endl;


		iCent5 = iMoney_back / 0.5;
		iMoney_back = fmod ((int)iMoney_back , 0.5);

		cout << "You will get: " << iCent5 << " X 0.5 $ " << endl;

		iCent1 = iMoney_back / 0.1;
		iMoney_back = fmod ((int)iMoney_back, 0.1);

		cout << "You will get: " << iCent1 << " X 0.1 $ " << endl;

		break;
	
	}

	return 0;
}
you may try this code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
    cout<<setprecision(2)<<fixed;
    double iAmount_due {0 },iGiven_money { 0 };
    double moneyCat[]{100, 50, 20, 10, 5, 2, 1, 0.25, 0.10, 0.05, 0.01};
    cout << "Enter the amount due please: ";
    cin >> iAmount_due;
    cout << "Enter the amount given please: ";
    cin >> iGiven_money;
    double iMoney_back = (round(iGiven_money*100 -iAmount_due*100))/100;

    if(iMoney_back) cout << "We will give you : " << iMoney_back << " $ back" << endl;
    else cout << "No money back" << endl;

    int count = 0;
    for(int i = 0; i<11; i++) {
        if (iMoney_back >= moneyCat[i]) {
            iMoney_back = iMoney_back - moneyCat[i];
            count++;
            if (moneyCat[i] > iMoney_back ) {
                cout << "you will get: " <<count << " X " << moneyCat[i]<<"$" << endl;
                count = 0;
            }
            else i--;
        }
    }
    return 0;
}


output:

Enter the amount due please: 65.65
Enter the amount given please: 100
We will give you : 34.35 $ back
you will get: 1 X 20.00$
you will get: 1 X 10.00$
you will get: 2 X 2.00$
you will get: 1 X 0.25$
you will get: 1 X 0.10$
Last edited on
Topic archived. No new replies allowed.