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

Create a Rational Number class. A Rational number has 2 parts, an integer numera

ID: 3530421 • Letter: C

Question

Create a Rational Number class. A Rational number has 2 parts, an integer numerator and an integer denominator. Add two constructors (negative denominators must be moved to the numerator), getters, setters, a print method, and an input method. Data should print as numerator/denominator. Data can be read in as two integer values separated by a space. Add methods, using overloaded operators, for addition, subtraction, multiplication, division. Code friend methods to do equality, less than relationship test, and output (overload the << operator). Code a main method to test all the class and friend methods. Be sure to test relationship methods for both true and false. Run 3 times with 2/3 and

Explanation / Answer

#include<iostream>

using namespace std;


class RationalNumber

{

int numerator;

int denominator;


public:

RationalNumber()

{

numerator=0;

denominator=1;

}

RationalNumber(int n,int d)

{

numerator=n;

denominator=d;

if(d<0) //shiffting the negative sign in denominator to numerator

numerator=-numerator;

}

void setNumerator(int n)

{

numerator=n;

}

void setDenominator(int d)

{

denominator=d;

if(denominator<0)

numerator=-numerator;

}

int getNumerator()

{

return numerator;

}

int getDenominator(int d)

{

return denominator;

}

// --------------------- overloaded operators for +,-,*,/ ----------------------------------------


RationalNumber operator+(RationalNumber r);

RationalNumber operator-(RationalNumber r);

RationalNumber operator*(RationalNumber r);

RationalNumber operator/(RationalNumber r);


// ----------------- friend function for ==,< --------------------------------------------

friend bool operator==(RationalNumber r1,RationalNumber r2);

friend bool operator<(RationalNumber r1, RationalNumber r2);

friend ostream& operator<<(ostream&,const RationalNumber& r);


};



RationalNumber RationalNumber::operator+(RationalNumber r)

{

RationalNumber temp;

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

temp.denominator= abs(denominator*r.denominator);

return temp;

}


RationalNumber RationalNumber::operator-(RationalNumber r)

{

RationalNumber temp;

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

temp.denominator= (denominator*r.denominator);

return temp;

}


RationalNumber RationalNumber::operator*(RationalNumber r)

{

RationalNumber temp;

temp.numerator= numerator*r.numerator;

temp.denominator= denominator*r.denominator;

return temp;

}


RationalNumber RationalNumber::operator/(RationalNumber r)

{

RationalNumber temp;

temp.numerator= numerator*r.denominator;

temp.denominator= denominator*r.numerator;

return temp;

}


bool operator==(RationalNumber r1,RationalNumber r2)

{

if(r1.numerator*r2.denominator == r2.numerator*r1.denominator)

return true;

else

return false;

}


bool operator<(RationalNumber r1,RationalNumber r2)

{

if(r1.numerator*r2.denominator < r2.numerator*r1.denominator)

return true;

else

return false;

}


ostream& operator<<(ostream& os,const RationalNumber& r)

{

os<<r.numerator<<"/"<<r.denominator;

return os;

}



//--------------------- main function to check friend and overloaded operators---------


int main()

{

RationalNumber a,b;

int i,j;

cout<<"enter numerator and denominator of first rational number ";

cin>>i>>j;

a.setNumerator(i);

a.setDenominator(j);


cout<<"enter numerator and denominator of second rational number ";

cin>>i;

cin>>j;

b.setNumerator(i);

b.setDenominator(j);


cout<<"a+b="<<a+b<<" ";

cout<<"a-b="<<a-b<<" ";

cout<<"a*b="<<a*b<<" ";

cout<<"a/b="<<a/b<<" ";


if(a==b)

cout<<"a is equall to b ";

else

cout<<"a is not equall to b ";


if(a<b)

cout<<"a is less than b";


return 0;

}