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....


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="">

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;


  }


};

>
Jun 09, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here