Hello, I am having some trouble with this
C++
homework. I have provided my code below as the question is asking to place a new int main function, that the question provided, on top of the one I wrote.
(CANNOT change the the int main that the question has provided as that will not answer the question be asked.)
Continuous of question 1. Implement operator overloading.
Operator Overloading
a) Implement two unary operator overload functions (-,+,!).
b) Implement four arithmetic operator overload functions (+,-,*,/).
c) Implement six relational operator overload functions (==,!=,>,>=,<,>,><>
d) Implement the insertion operator overload function (<>
e) Implement the extraction operator overload function (>>).
f) Implement the subscript operator overload function ([]).
Make sure that each function is optimally overloaded for its purpose.
(pick between member, non-member, friend as appropriate)
Notes
Add Rational Numbers
Given a/b + c/d:
Step 1: Find the LCM of b and d.
Step 2: Create a new Rational Number: ((a*(LCM/b) + (c*(LCM/d)) / LCM.
Step 3: Reduce the new Rational Number from step 2.
Step 4: Return the new Rational Number.
Subtract Rational Numbers
Given a/b - c/d:
Step 1: Find the LCM of b and d.
Step 2: Create a new Rational Number: ((a*(LCM/b) - (c*(LCM/d)) / LCM. Step 3: Reduce the new Rational Number from step 2.
Step 4: Return the new Rational Number.
Multiply Rational Numbers
Given a/b * c/d:
Step 1: Create a new Rational Number: (a*c) / (b*d).
Step 2: Return the new Rational Number.
Divide Rational Numbers
Given a/b * c/d:
Step 1: Create a new Rational Number: (a*c) / (b*d).
Step 2: Return the new Rational Number.
Compare Rational Numbers: greater than
Determine if a/b > c/d:
Step 1: Find the LCM of b and d.
Step 2: If (a*(LCM/b) > (c*(LCM/d) return true, otherwise false.
Compare Rational Numbers: less than
Determine if a/b <>
Step 1: Find the LCM of b and d.
Step 2: If (a*(LCM/b) < (c*(lcm/d)="" return="" true,="" otherwise="">
Use following main function to test your program. (have to use this main function)
int main() {
cout <>
RatNum r1(1,2), r2(1,6), r3(2,5);
// test operator overloads
cout < "\ninput/output="" stream="" operators:="" "=""><>
RatNum r4;
cout < "enter="" a="" rational="" number:="">
cin >> r4;
cout < r4=""><>
cout < "negation="" operation:="" "=""><>
cout < -r4=""><>
// test arithmetic overloads
cout < "\narithmetic="" operators:="" "=""><>
RatNum r5 = r1 + r2;
cout < r1="">< "="" +="" "="">< r2="">< "=" << r5 << endl;
RatNum r6 = r1 - r2;
cout << r1 << " -="" "="">< r2="">< "=" << r6 << endl;
RatNum r7 = r1 * r2;
cout << r1 << " *="" "="">< r2="">< "=" << r7 << endl;
RatNum r8 = r1 / r2;
Due date: Jul 17, 11:59 PM
cout << r1 << " "="">< r2="">< "=" << r8 << endl;
// test arithmetic operation chaining
cout << " \narithmetic="" chaining:="" "=""><>
RatNum r9 = r5 + r6 - r7 * r8;
cout < r5="">< "="" +="" "="">< r6="">< "="" -="" "="">< r7="">< "="" *="" "="">< r8="">< "=" << r9 << endl;
// test relational operator overload
cout << " \nrelational="" operators:="" "=""><>
cout < r5="">< "="=" "="">< r6="">< "?="" "="">< (r5="=r6)"><>
cout < r5="">< "="" !=" << r6 << " "="">< (r5!="r6)"><>
cout < r5="">< "=""> " < r6="">< "?="" "="">< (r5="">r6) <>
cout < r5="">< "="">< "="">< r6="">< "?="" "=""><><>
// test subscript overload
cout < "\nsubscript="" operator:="" "=""><>
cout < r5="">< " num=" << r5[1] << " den=" << r5[2] << endl;
cout << endl;
return 0;
}
(the code i have)
#include
using namespace std;
class ratnum{
int numerator, denominator;
public:
ratnum(){
numerator = 0;
denominator = 1;
}
ratnum(int num){
numerator = num;
denominator = 1;
}
ratnum(int num, int den){
numerator = num;
denominator = den;
}
void setnum(int num){
numerator = num;
}
int getnum(){
return numerator;
}
void setden(int den){
denominator = den;
}
int getden(){
return denominator;
}
static int gcd(int a, int b){
if(a > b)
return gcd(a - b, b);
else if(a < b)
return gcd(a, b - a);
else
return a;
}
static int lcm(int a, int b){
int ab = a * b;
int gcd = ratnum::gcd(a, b);
return ab / gcd;
}
void reduce(){
int gcd = ratnum::gcd(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
};
"="" num=" << r5[1] << " den=""> " num=" << r5[1] << " den=" << r5[2] << endl;
cout << endl;
return 0;
}
(the code i have)
#include
using namespace std;
class ratnum{
int numerator, denominator;
public:
ratnum(){
numerator = 0;
denominator = 1;
}
ratnum(int num){
numerator = num;
denominator = 1;
}
ratnum(int num, int den){
numerator = num;
denominator = den;
}
void setnum(int num){
numerator = num;
}
int getnum(){
return numerator;
}
void setden(int den){
denominator = den;
}
int getden(){
return denominator;
}
static int gcd(int a, int b){
if(a > b)
return gcd(a - b, b);
else if(a < b)
return gcd(a, b - a);
else
return a;
}
static int lcm(int a, int b){
int ab = a * b;
int gcd = ratnum::gcd(a, b);
return ab / gcd;
}
void reduce(){
int gcd = ratnum::gcd(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
};
>