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 < c/d: Step 1: Find the LCM of b and d. Step 2: If (a*(LCM/b) < (c*(LCM/d) return true, otherwise false. Use following main function to test your program. (have to use this main function) int main() { cout << endl; RatNum r1(1,2), r2(1,6), r3(2,5); // test operator overloads cout << "\nInput/Output Stream Operators: " << endl; RatNum r4; cout << "Enter a rational number: "; cin >> r4; cout << r4 << endl; cout << "Negation Operation: " << endl; cout << -r4 << endl; // test arithmetic overloads cout << "\nArithmetic Operators: " << endl; 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: " << endl; RatNum r9 = r5 + r6 - r7 * r8; cout << r5 << " + " << r6 << " - " << r7 << " * " << r8 << " = " << r9 << endl; // test relational operator overload cout << "\nRelational Operators: " << endl; cout << r5 << " == " << r6 << "? " << (r5==r6) << endl; cout << r5 << " != " << r6 << "? " << (r5!=r6) << endl; cout << r5 << " > " << r6 << "? " << (r5>r6) << endl; cout << r5 << " < " << r6 << "? " << (r5
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 < c/d:
Step 1: Find the LCM of b and d.
Step 2: If (a*(LCM/b) < (c*(LCM/d) return true, otherwise false.
Use following main function to test your program. (have to use this main function)
int main() {
cout << endl;
RatNum r1(1,2), r2(1,6), r3(2,5);
// test operator overloads
cout << "\nInput/Output Stream Operators: " << endl;
RatNum r4;
cout << "Enter a rational number: ";
cin >> r4;
cout << r4 << endl;
cout << "Negation Operation: " << endl;
cout << -r4 << endl;
// test arithmetic overloads
cout << "\nArithmetic Operators: " << endl;
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: " << endl;
RatNum r9 = r5 + r6 - r7 * r8;
cout << r5 << " + " << r6 << " - " << r7 << " * " << r8 << " = " << r9 << endl;
// test relational operator overload
cout << "\nRelational Operators: " << endl;
cout << r5 << " == " << r6 << "? " << (r5==r6) << endl;
cout << r5 << " != " << r6 << "? " << (r5!=r6) << endl;
cout << r5 << " > " << r6 << "? " << (r5>r6) << endl;
cout << r5 << " < " << r6 << "? " << (r5<r6) << endl;
// test subscript overload
cout << "\nSubscript Operator: " << endl;
cout << r5 << " num=" << r5[1] << " den=" << r5[2] << endl;
cout << endl;
return 0;
}
(The code I have)
#include <iostream>
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;
}
};
Step by step
Solved in 4 steps with 1 images