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

Define a structure (struct) or class that can represent for a rational number. U

ID: 3555029 • Letter: D

Question

Define a structure (struct) or class that can represent for a rational number.

Use the structure or class in a C++ program that can perform all of the following operations with
any two valid rational numbers entered at the keyboard:

a. Adding two rational numbers. The result should be stored in reduced form.
b. Subtracting two rational numbers. The result should be stored in reduced form.
c. Multiplying two rational numbers. The result should be stored in reduced form.
d. Dividing two rational numbers. The result should be stored in reduced form.
e. Printing rational numbers in the form n/d, where n is the numerator and d is the
denominator.
f. Printing Rational numbers in floating-point format.

Allow your program runs continuously until user wants to quit it.

Lastly, your name must be displayed (only) before the termination of the program.

Validate your input values; Reject all

Explanation / Answer

//keep the below in seperate file 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

// Member-function definitions for class Rational.
#include <iostream>
#include "Rational.h" // include definition of class Rational
using namespace std;

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 << " DIVIDE BY ZERO ERROR!!!" << ' ';
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

#include <iostream>
#include "Rational.h" // include definition of class Rational
using namespace std;

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 << ' ';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << " ";

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 << ' ';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << " ";

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 << ' ';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << " ";

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 << ' ';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << endl;
} // end main

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