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

I need to be able to do this Rational r1 = 1; cout << (r1 == 1); // prints true

ID: 3863163 • Letter: I

Question

I need to be able to do this

Rational r1 = 1;

cout << (r1 == 1); // prints true

cout << (2 == r1); // prints false

cout << (r1 < 2); // prints true

cout << (0 < r1); // prints false

cout << (r1 + 2); // prints 3/1 (or just 3)

To do this, you must provide overloads of all operators that take an int as one of the arguments, and a Rational as the other. This will increase the size of your program considerable.

So far i have

Rational Rational::operator+(const Rational &r, int s)const
{
Rational t;
t.numerator = r.numerator * denominator;
t.numerator += r.denominator * numerator;
t.denominator = r.denominator * denominator;
return t;}

Im not sure how incorporate the int. I have a constructor that accepts an int and gives a rational number (Rational(int)). im also getting an error saying it can accept zero or 1. I also have to write the function for ==, !=, <. <=, >, >=. +,-,*,/. I have access to a gcd and a lcm function aswell. The other functions as i have them are

// 1. Comparing two rational numbers for equality:
// - r1 == t2
bool Rational::operator==(const Rational &r, int s) const
{
Rational(s); // use this to create the int to a rational number with num and denom
return (r.numerator * denominator == r.denominator*numerator);
}
// - r1 != r2
bool Rational::operator!=(const Rational &r, int s) const
{
Rational(s); // use this to create the int to a rational number with num and denom
return !(r.numerator * denominator == r.denominator*numerator);
}


// 2. Ordering rational numbers
// - r1 < r2
bool Rational::operator<(const Rational &r, int s) const
{
int num1 = numerator * r.denominator;
   int num2 = denominator * r.numerator;
   return(num1 < num2);
}
// - r1 > r2
bool Rational::operator>(const Rational &r, int s) const
{
int num1 = numerator * r.denominator;
   int num2 = denominator * r.numerator;
   return(num1 > num2);
}
// - r1 <= r2
bool Rational::operator<=(const Rational &r, int s) const
{
int num1 = numerator * r.denominator;
   int num2 = denominator * r.numerator;
   return(num1 <= num2);
}
// - r1 >= r2
bool Rational::operator>=(const Rational &r, int s) const
{
int num1 = numerator * r.denominator;
   int num2 = denominator * r.numerator;
   return(num1 >= num2);
}

// 3. The standard arithmetic operators
// - r1 + r2
// purpose: add two rational numbers
Rational Rational::operator+(const Rational &r, int s)const
{
Rational t;
t.numerator = r.numerator * denominator;
t.numerator += r.denominator * numerator;
t.denominator = r.denominator * denominator;
return t;
}
// - r1 - r2
//purpose: subtract two rational numbers
Rational Rational::operator-(const Rational &r, int s)const
{
Rational t;
t.numerator = r.denominator * numerator;
t.numerator -= denominator * r.numerator;
t.denominator = r.denominator * denominator;
return t;

}
// - r1 * r2
// purpose: multiply two rational numbers
Rational Rational::operator*(const Rational &r, int s)const
{
Rational t;
t.numerator = r.numerator * numerator;
t.denominator = r.denominator * denominator;
return t;
}
// - r1 / r2
Rational Rational::operator/(const Rational &r, int s)const
{
Rational t;
t.numerator = r.denominator * numerator;
t.denominator = denominator * r.numerator;
   return t;
}

Explanation / Answer

#include<iostream>

using namespace std;

class Rational
{
   private:
  
   int numerator, denominator;
  
   public:
  
   Rational(int i)
   {
       numerator = i;
       denominator = 1;
   }
  
   Rational(int i, int j)
   {
       numerator = i;
       while(j == 0)
       {
           cout<<" Denominator can not be equals to zero ";
           cin>>j;
       }
       denominator = j;
   }
  
   void print();
   Rational operator+(int);
   Rational operator+(const Rational &);
   Rational operator-(int);
   Rational operator-(const Rational &);
   Rational operator*(int);
   Rational operator*(const Rational &);
   Rational operator/(int);
   Rational operator/(const Rational &);
  
   friend bool operator==(const Rational, int);
   bool operator==(const Rational &);
   friend bool operator==(int, const Rational);
  
   friend bool operator<(const Rational, int);
   bool operator<(const Rational &);
   friend bool operator<(int, const Rational);
};

bool Rational::operator<(const Rational &r1)
{
   int num1 = numerator * r1.denominator;
int num2 = denominator * r1.numerator;
return(num1 < num2);
}

bool operator<(const Rational r1, int i)
{
   Rational t = i;
   int num1 = t.numerator * r1.denominator;
int num2 = t.denominator * r1.numerator;
return(num1 < num2);
}

bool operator<(int i, const Rational r1)
{
   Rational t = i;
   int num1 = t.numerator * r1.denominator;
int num2 = t.denominator * r1.numerator;
return(num1 < num2);
}

bool operator==(int i, const Rational r1)
{
   Rational t = i;
   return (r1.numerator == t.numerator && r1.denominator == t.denominator);
}

bool operator==(const Rational r1, int i)
{
   Rational t = i;
   return (r1.numerator == t.numerator && r1.denominator == t.denominator);
}

bool Rational::operator==(const Rational &r1)
{
   return (r1.numerator == numerator && r1.denominator == denominator);
}

Rational Rational::operator/(const Rational &r1)
{
   Rational t = r1;
   t.numerator *= denominator;
   t.denominator *= numerator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator/(int i)
{
   Rational t = i;
   t.numerator *= denominator;
   t.denominator *= numerator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator*(const Rational &r1)
{
   Rational t = r1;
   t.numerator *= numerator;
   t.denominator *= denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator*(int i)
{
   Rational t = i;
   t.numerator *= numerator;
   t.denominator *= denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator-(const Rational &r1)
{
   Rational t = r1;
   t.numerator = numerator * t.denominator - t.numerator * denominator;
   t.denominator = t.denominator * denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator-(int i)
{
   Rational t = i;
   t.numerator = numerator * t.denominator - t.numerator * denominator;
   t.denominator = t.denominator * denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator+(int i)
{
   Rational t = i;
   t.numerator = numerator * t.denominator + t.numerator * denominator;
   t.denominator = t.denominator * denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

Rational Rational::operator+(const Rational &r1)
{
   Rational t = r1;
   t.numerator = numerator * t.denominator + t.numerator * denominator;
   t.denominator = t.denominator * denominator;
   cout<<t.numerator<<"/"<<t.denominator<<endl;
   return t;
}

void Rational::print()
{
   cout<<" Numerator :: "<<numerator<<endl;
   cout<<" Denominator :: "<<denominator<<endl;
}

int main()
{
   Rational r1 = 1;
   r1.print();
   cout<<(r1 == 1)<<endl;
   cout<<(2 == r1)<<endl;
   cout<<(r1 < 2)<<endl;
   cout<<(0 < r1)<<endl;
   Rational r2 = (r1 + 2);
   return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote