In: Computer Science
In C++
Create a class called Rational (separate the files as shown in the
chapter) for performing arithmetic with fractions. Write a program
to test your class. Use integer variables to represent the private
data of the class-the numerator and the denominator. Provide a
constructor that enables an object of this class to be initialized
when it's declared. The constructor should contain default values
in case no initializers are provided and should store the fraction
in reduced form. For example, the fraction 2/4 would be stored in
the object as 1 in the numerator and 2 in the denominator. Provide
public member functions that perform each of the following tasks:
add - Adds two Rational numbers. The result should be stored in
reduced form. subtract - Subtracts two Rational numbers. Store the
result in reduced form. multiply - Multiples two Rational numbers.
Store the result in reduced form. divide - Divides two Rational
numbers. The result should be stored in reduced form.
(toRationalString) - Returns a string representation of a Rational
number in the form a/b, where a is the numerator and b is the
denominator. display - Display the Rational number a/b. toDouble -
Returns the Rational number as a double. (make sure the driver
tests out all the functions)
(make sure the driver tests out all the functions)
Dear Student, i have spent lot of time on it, so if you got something from it, then please give an Upvote. Thank You
                                          Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
class Rational
{
public:
 Rational( int = 0, int = 1 ); // default constructor
 Rational addition( const Rational & ); // function addition
 Rational subtraction( const Rational & ); // function subtraction
 Rational multiplication( const Rational & ); // function multi.
 Rational division( const Rational & ); // function division
 void printRational (); // print rational format
 void printRationalAsDouble(); // print rational as double format
private:
 int numerator; // integer numerator
 int denominator; // integer denominator
 void reduction(); // utility function
}; // end class Rational
#endif
                                          Rational.cpp
// Member-function definitions for class Rational.
#include <iostream>
using std::cout;
#include "Rational.h" // include definition of class Rational
Rational::Rational( int n, int d )
{
 numerator = n; // sets numerator
 denominator = d; // sets denominator
 reduction(); // store the fraction in reduced form
} // end Rational constructor
Rational Rational::addition( const Rational &a )
{
 Rational t; // creates Rational object
 t.numerator = a.numerator * denominator;
 t.numerator += a.denominator * numerator;
 t.denominator = a.denominator * denominator;
 t.reduction(); // store the fraction in reduced form
 return t;
} // end function addition
Rational Rational::subtraction( const Rational &s )
{
 Rational t; // creates Rational object
 t.numerator = s.denominator * numerator;
 t.numerator -= denominator * s.numerator;
 t.denominator = s.denominator * denominator;
 t.reduction(); // store the fraction in reduced form
 return t;
} // end function subtraction
Rational Rational::multiplication( const Rational &m )
{
 Rational t; // creates Rational object
 t.numerator = m.numerator * numerator;
 t.denominator = m.denominator * denominator;
 t.reduction(); // store the fraction in reduced form
 return t;
} // end function multiplication
Rational Rational::division( const Rational &v )
{
 Rational t; // creates Rational object
 t.numerator = v.denominator * numerator;
 t.denominator = denominator * v.numerator;
 t.reduction(); // store the fraction in reduced form
 return t;
} // end function division
void Rational::printRational ()
{
 if ( denominator == 0 ) // validates denominator
 cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';
 else if ( numerator == 0 ) // validates numerator
 cout << 0;
 else
 cout << numerator << '/' << denominator;
} // end function printRational
void Rational::printRationalAsDouble()
{
 cout << static_cast< double >( numerator ) / denominator;
} // end function printRationalAsDouble
void Rational::reduction()
{
 int largest;
 largest = numerator > denominator ? numerator : denominator;
 int gcd = 0; // greatest common divisor
 for ( int loop = 2; loop <= largest; loop++ )
 if ( numerator % loop == 0 && denominator % loop == 0 )
 gcd = loop;
 if (gcd != 0)
 {
 numerator /= gcd;
 denominator /= gcd;
 } // end if
} // end function reduction
                                          Solution.cpp
#include <iostream>
using std::cout;
using std::endl;
#include "Rational.h" // include definition of class Rational
int main()
{
 Rational c( 2, 6 ), d( 7, 8 ), x; // creates three rational objects
 c.printRational(); // prints rational object c
 cout << " + ";
 d.printRational(); // prints rational object d
 x = c.addition( d ); // adds object c and d; sets the value to x
 cout << " = ";
 x.printRational(); // prints rational object x
 cout << '\n';
 x.printRational(); // prints rational object x
 cout << " = ";
 x.printRationalAsDouble(); // prints rational object x as double
 cout << "\n\n";
 c.printRational(); // prints rational object c
 cout << " - ";
 d.printRational(); // prints rational object d
 x = c.subtraction( d ); // subtracts object c and d
 cout << " = ";
 x.printRational(); // prints rational object x
 cout << '\n';
 x.printRational(); // prints rational object x
 cout << " = ";
 x.printRationalAsDouble(); // prints rational object x as double
 cout << "\n\n";
 c.printRational(); // prints rational object c
 cout << " x ";
 d.printRational(); // prints rational object d
 x = c.multiplication( d ); // multiplies object c and d
 cout << " = ";
 x.printRational(); // prints rational object x
 cout << '\n';
 x.printRational(); // prints rational object x
 cout << " = ";
 x.printRationalAsDouble(); // prints rational object x as double
 cout << "\n\n";
 c.printRational(); // prints rational object c
 cout << " / ";
 d.printRational(); // prints rational object d
 x = c.division( d ); // divides object c and d
 cout << " = ";
 x.printRational(); // prints rational object x
 cout << '\n';
 x.printRational(); // prints rational object x
 cout << " = ";
 x.printRationalAsDouble(); // prints rational object x as double
 cout << endl;
 return 0;
} // end main