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 andExplanation / 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;
}