Change maker penny shy

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
  //THE CHALLENGE
// ME



#include <iostream>
#include <math.h>


using namespace std;



int main()
{

	double owed;
	double paid;
	double change;
	double pennies;
	double nickels;
	double dimes;
	double quarters;
	double fifties;
	double dollars;
	double twodollars;
	double newval;
	double newval2;
	double newval3;
	double newval4;
	double newval5;
	double newval6;
	double newval7;
	





	cout << "Enter amount owed:";
	cin >> owed;
	cout << "Enter amount paid:";
	cin >> paid;



	change = paid - owed ;
	
	newval = fmod (change , 2);
	twodollars = (change - newval) / 2;
	change = change - twodollars * 2;
	
	newval2 = fmod (change , 1);
	dollars = (change - newval2);
	change = change - dollars;
	
	newval3 = fmod (change , .50);
	fifties = (change - newval3) / .50;
	change = change - fifties * .50;
	
	newval4 = fmod (change , .25);
	quarters = (change - newval4) / .25;
	change = change - quarters * .25;

	newval5 = fmod (change , .10);
	dimes = (change - newval5) / .10;
	change = change - dimes * .10;

	newval6 = fmod (change , .05);
	nickels = (change - newval6) / .05;
	change = change - nickels * .05;

	newval7 = fmod (change , .01);
	pennies = (change - newval7) / .01;
	change = change - pennies * .01;







	
	cout << "TWOS " <<twodollars << endl;
	cout << "ONES " <<dollars << endl;
	cout << "50 CENTS " <<fifties << endl;
	cout << "QUARTERS "<<quarters << endl;
	cout << "DIMES " <<dimes << endl;
	cout << "NICKELS" << nickels << endl;
	cout << "PENNIES" <<pennies << endl;





system("PAUSE")


	return 0;

}

Essentially every time i run it it comes out one penny short, i was thinking about adding +.01 to the initial setting of change, which worked, but it feels like cheating, does anyone know why it does that or how to fix it? (also this isnt homework, we had a similar one in class and teacher challenged me to do this, havent even learned fmod or half the stuff in here yet haha)

also i know i could set newval to 0 after each run and eliminate the other 6, that was for getting rid of an earlier program, ill add that and an if/else statement for if they pay less than they owe later
just tried multiplying them all by 100 as well, still has error
Topic archived. No new replies allowed.