Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

how would i write an operator overloading version for rational number. 1. The te

ID: 3532303 • Letter: H

Question

how would i write an operator overloading version for rational number.


1. The template for class definition will be:

class RationalNumber

{

public:

  RationalNumber( int = 0, int = 1 ); // default constructor

  /* Write prototype for operator + */

  /* Write prototype for operator - */

  /* Write prototype for operator * */

  /* Write prototype for operator / */

  void printRational() const; // display rational number

private:

  int numerator; // private variable numerator

  int denominator; // private variable denominator

  void reduction(); // function for fraction reduction

}; // end class RationalNumber

2. The following is the code for the main function to test the program.

int main()

{

  RationalNumber c( 7, 3 ), d( 3, 9 ), x;

  c.printRational();

  cout << " + ";

  d.printRational();

  cout << " = ";

  x = c + d; // test overloaded operators + and =

  x.printRational();

  cout << ' ';

  c.printRational();

  cout << " - ";

  d.printRational();

  cout << " = ";

  x = c - d; // test overloaded operators - and =

  x.printRational();

  cout << ' ';

  c.printRational();

  cout << " * ";

  d.printRational();

  cout << " = ";

  x = c * d; // test overloaded operators * and =

  x.printRational();

  cout << ' ';

  c.printRational();

  cout << " / ";

  d.printRational();

  cout << " = ";

  x = c / d; // test overloaded operators / and =

  x.printRational();

  cout << ' ';

  c.printRational();

  cout << " is: ";

  return 0;

} // end main

Explanation / Answer

#include<iostream>

#include<math.h>

using namespace std;



class RationalNumber

{

public:

RationalNumber( int n= 0, int d= 1 )// default constructor

{

numerator=n;

denominator=d;


}

// prototype of overloaded operators

RationalNumber operator+(RationalNumber r);

RationalNumber operator-(RationalNumber r);

RationalNumber operator*(RationalNumber r);

RationalNumber operator/(RationalNumber r);



void printRational()const;// display rational number

private:

int numerator; // private variable numerator

int denominator; // private variable denominator

int gcd(int a, int b);

void reduction();// function for fraction reduction


}; // end class RationalNumber



RationalNumber RationalNumber:: operator+(RationalNumber r)

{RationalNumber temp;

temp.numerator=numerator*r.denominator+r.numerator*denominator;

temp.denominator=denominator*r.denominator;

temp.reduction();

return temp;

}

RationalNumber RationalNumber::operator-(RationalNumber r)

{RationalNumber temp;

temp.numerator=numerator*r.denominator-r.numerator*denominator;

temp.denominator=denominator*r.denominator;

temp.reduction();

return temp;

}

RationalNumber RationalNumber::operator*(RationalNumber r)

{RationalNumber temp;

temp.numerator=numerator*r.numerator;

temp.denominator=denominator*r.denominator;

temp.reduction();

return temp;

}

RationalNumber RationalNumber:: operator/(RationalNumber r)

{ RationalNumber temp;

temp.numerator=numerator*r.denominator;

temp.denominator=denominator*r.numerator;

temp.reduction();

return temp;

}

int RationalNumber::gcd(int a, int b)

{

while( 1 )

{

a = a % b;

if( a == 0 )

return b;

b = b % a;


if( b == 0 )

return a;

}

}

void RationalNumber::reduction()// function for fraction reduction

{


if (numerator != 0)

{

int common = gcd(abs(numerator), denominator);


numerator = numerator / common;

denominator = denominator / common;

}

}

void RationalNumber::printRational()const// display rational number

{

cout<<numerator<<"/"<<denominator;

}



int main()

{

RationalNumber c( 7, 3 ), d( 3, 9 ), x;

c.printRational();

cout << " + ";

d.printRational();

cout << " = ";

x = c + d; // test overloaded operators + and =

x.printRational();

cout << ' ';

c.printRational();

cout << " - ";

d.printRational();

cout << " = ";

x = c - d; // test overloaded operators - and =

x.printRational();

cout << ' ';

c.printRational();

cout << " * ";

d.printRational();

cout << " = ";

x = c * d; // test overloaded operators * and =

x.printRational();

cout << ' ';

c.printRational();

cout << " / ";

d.printRational();

cout << " = ";

x = c / d; // test overloaded operators / and =

x.printRational();

cout << ' ';

c.printRational();

cout << " is: ";


return 0;

} // end main