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

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

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;

  }

};

Expert Solution
steps

Step by step

Solved in 4 steps with 1 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY