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

please write an operator overloading version for rational number. 1. The templat

ID: 3628259 • Letter: P

Question

please 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 your 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>
using namespace std;
class RationalNumber
{
public:
RationalNumber( int = 0, int = 1 ); // default constructor
RationalNumber operator+(RationalNumber x);
RationalNumber operator-(RationalNumber x);
RationalNumber operator*(RationalNumber x);
RationalNumber operator/(RationalNumber x);
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
void RationalNumber::reduction()
{int a=numerator;
int b=denominator;
if(a<0)
    a=-a;
if(b<0)
    b=-b;
     while (a != b)
     {
          if (a > b)
               a -= b;
          else
               b -= a;       
     }
numerator/=a;
denominator/=a;

}
void RationalNumber::printRational() const
{cout<<numerator<<"/"<<denominator;
}
RationalNumber::RationalNumber(int n, int d)
{numerator = n;
denominator = d;
}
RationalNumber RationalNumber::operator + (RationalNumber x)
{RationalNumber temp;
temp.numerator=numerator*x.denominator+x.numerator*denominator;
temp.denominator=x.denominator*denominator;
temp.reduction();
return(temp);}

RationalNumber RationalNumber::operator - (RationalNumber x)
{RationalNumber temp;
temp.numerator=numerator*x.denominator-x.numerator*denominator;
temp.denominator=x.denominator*denominator;
temp.reduction();
return(temp);}

RationalNumber RationalNumber::operator *(RationalNumber x)
{RationalNumber temp;
temp.numerator=numerator*x.numerator;
temp.denominator=denominator*x.denominator;
temp.reduction();
return(temp);}

RationalNumber RationalNumber::operator / (RationalNumber x)
{RationalNumber temp;
temp.numerator=numerator*x.denominator;
temp.denominator=denominator*x.numerator;
temp.reduction();
return(temp);}


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