-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathFraction4123.cpp
128 lines (116 loc) · 2.57 KB
/
Fraction4123.cpp
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
119
120
121
122
123
124
125
126
127
128
#include "Fraction4123.h"
//1. Implement Default constructor
// Set num to 0 and den to 1 - Student Wuthrich
Fraction4123::Fraction4123()
{
num = 0;
den = 1;
}
//2. Imprement parameterized constructor
// Set num and den to values passed through parameters - Samuel Mullins
Fraction4123::Fraction4123(int n, int d){
num = n;
if (d != 0)
den = d;
else{
cout << "denominator cannot equal 0" << endl;
den = 1;
}
}
Fraction4123::~Fraction4123()
{
}
//3. Implement both accessor functions - Keona Rollerson
int Fraction4123::getNumerator(){
return num;
}
int Fraction4123::getDenominator(){
return den;
}
//4. Implement both setters - Jesse Houk
void Fraction4123::setNumerator(int n){
num = n;
}
void Fraction4123::setDenominator(int d){
if (d != 0)
den = 0;
else {
cout << "denominator cannot equal 0\n";
den = 1;
}
}
// Implemented recursive Euclid's algorithm - Holden Hall
// Example 8 and 12
//x: 8
//y: 12
//x: 12
//y: 8
//x: 8
//y: 4
// return 4
int Fraction4123::gcd(int x, int y){
if (y == 0)
return x;
return gcd(y, x % y);
}
//6. Implement function to simplify fraction - Cory Press
void Fraction4123::simplify() {
int GCD = gcd(num, den);
if (GCD == 0) {
den = 1;
}
else {
num = num / GCD;
den = den / GCD;
}
}
//Member functions that return the answer
//through a return statement
//7 Implement fraction addition
Fraction4123 Fraction4123::add(Fraction4123 frac){
Fraction4123 sum;
sum.num = (frac.num * den) + (num * frac.den);
sum.den = frac.den * den;
return sum;
}
//8
Fraction4123 Fraction4123::subtract(Fraction4123) {
Fraction4123 diff;
return diff;
}
//9
Fraction4123 Fraction4123::multiply(Fraction4123) {
Fraction4123 product;
return product;
}
//10
Fraction4123 Fraction4123::divide(Fraction4123) {
Fraction4123 quotient;
return quotient;
}
//11 implemented toDecimal - Michael Lewis
// casts numerator as float then devides by the denominator and stores
// the result in the decim double.
double Fraction4123::toDecimal() {
double decim;
decim = static_cast <float> (num) / den;
return decim;
}
ostream & operator<<(ostream &out, Fraction4123 f){
int whole = 1;
f.simplify();
if (f.num < f.den){
if (f.num == 0)
out << 0;
else
out << f.getNumerator() << "/" << f.getDenominator();
}
else{
whole = f.num / f.den;
if (f.num % f.den == 0)
out << whole;
else
out << whole << " " << f.num % f.den << "/" << f.getDenominator();
}
return out;
}