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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.