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

1. (Rational Class) Create a class called Rational for performing arithmetic wit

ID: 3667788 • Letter: 1

Question

1. (Rational Class) Create a class called Rational 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 is 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 the object as 1 in the numerator and 2 in the denominator. Provide public member functions that perform each of the following tasks:

a. Adding two Rational numbers by the function called addition. The result should be in reduced form.

b. Subtracting two Rational numbers by the function called subtraction. The result should be in reduced form.

c. Multiplying two Rational numbers by the function called multiplication. The result should be in reduced form.

d. Dividing two Rational numbers by the function called division. The result should be in reduced form.

e. Printing Rational numbers in the form a/b, where a is the numerator and b is the denominator.

f. Printing Rational numbers in floating-point format.

Explanation / Answer

//*HEADER*//

//*CPP FILE *//

#include "Rational.h"

#include <iostream>

#include <iomanip>

using std::cout;

using std::endl;

int* Rational::reducedForm(int num, int denom)

{    

//first get the GCD for a and b   

   int a = num, b = denom, c;

int* ans = new int[2];  

        //array created on heap   

    while ( a != 0 ) {

   c = a;

a = b%a;

  b = c;   

    }

//then reduce       

ans[0]= num/b;

    //reduced numerator

  ans[1]= denom/b;

  //reduced denominator

return ans; }

Rational::Rational(int anum, int adenom){

int * reduced = reducedForm(anum, adenom);

num = reduced[0];

denom = reduced[1];

delete reduced;      

          //delete the array that was on the heap (garbage collect) } Rational Rational::add(const Rational & r2)//read as result = (this + arg)

{

int numerator = (num * r2.denom) + (r2.num * denom);

int denominator = denom * r2.denom;

Rational sum(numerator, denominator); return sum;

}

Rational Rational::sub(const Rational & r2) //read as result = (this - arg)

//*MAIN*//