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

I need help i must add this into my program with out adding a whole other pragra

ID: 3707676 • Letter: I

Question

I need help i must add this into my program with out adding a whole other pragram into it it.

Create a constructor that prevents a 0 denominator in a fraction, reduces or simplifies fractions that are not in reduced form and avoids negative denominators.

Overload the addition, subtraction, multiplication and division operators for this class.

Overload the relational and equality operators for this class.

This is my program so far

header file

#pragma once
#include <iostream>

class Rational {
public:
Rational( int = 0, int = 1 );// constructor
Rational addition( const Rational & );
Rational subtraction( const Rational & );
Rational multiplication( const Rational & );
Rational division( Rational & );
void printRational( void );
void printRationalAsFloating( void );
private:
int numerator;
int denominator;
void reduction( void );
};

rational.cpp

#include <iostream>
#include "rational.h"

using namespace std;


Rational::Rational( int n, int d )
{
numerator = n;
denominator = d;
}

Rational Rational::addition( const Rational &a )
{
Rational t;

t.numerator = a.numerator * denominator + a.denominator * numerator;
t.denominator = a.denominator * denominator;
t.reduction();

return t;
}

Rational Rational::subtraction( const Rational &s )
{
Rational t;
t.numerator = s.denominator * numerator - denominator * s.numerator;
t.denominator = s.denominator * denominator;
t.reduction();

return t;
}

Rational Rational::multiplication( const Rational &m )
{
Rational t;

t.numerator = m.numerator * numerator;
t.denominator = m.denominator * denominator;
t.reduction();

return t;
}

Rational Rational::division( Rational &v )
{
Rational t;

t.numerator = v.denominator * numerator;
t.denominator = denominator * v.numerator;
t.reduction();

return t;
}
void Rational::printRational( void )
{
if ( denominator == 0 )
cout << " DIVIDE BY ZERO ERROR!!!" << ' ';
else if ( numerator == 0 )
cout << 0;
else
cout << numerator << '/' << denominator;
}

void Rational::printRationalAsFloating( void )
{ cout << static_cast< double >( numerator ) / denominator; }

void Rational::reduction( void )
{
int 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;
}
}

main.cpp

//Chris spaulding-This program takes fractions and adds, subtracts, divides, and multiplies them.//
#include <iostream>
#include "rational.h"

using namespace std;

int main()
{
Rational c( 1, 3 ), d( 7, 8 ), x;

c.printRational();
cout << " + ";
d.printRational();
x = c.addition( d );
cout << " = ";
x.printRational();
cout << ' ';
x.printRational();
cout << " = ";
x.printRationalAsFloating();
cout << " ";

c.printRational();
cout << " - ";
d.printRational();
x = c.subtraction( d );
cout << " = ";
x.printRational();
cout << ' ';
x.printRational();
cout << " = ";
x.printRationalAsFloating();
cout << " ";

c.printRational();
cout << " x ";
d.printRational();
x = c.multiplication( d );
cout << " = ";
x.printRational();
cout << ' ';
x.printRational();
cout << " = ";
x.printRationalAsFloating();
cout << " ";

c.printRational();
cout << " / ";
d.printRational();
x = c.division( d );
cout << " = ";
x.printRational();
cout << ' ';
x.printRational();
cout << " = ";
x.printRationalAsFloating();
cout << endl;

return 0;
}

Explanation / Answer

//constructor for validating denominator

Rational:Rational(int n, int d){

numerator = n;

if(d > 0) denominator = d;

else cout << "invalid denominator";

}

//overloading + operator

Rational operator + ( const Rational &a )

{

Rational t;

t.numerator = a.numerator * denominator + a.denominator * numerator;

t.denominator = a.denominator * denominator;

t.reduction();

return t;

}

//overloading - operator

Rational operator - ( const Rational &s )

{

Rational t;

t.numerator = s.denominator * numerator - denominator * s.numerator;

t.denominator = s.denominator * denominator;

t.reduction();

return t;

}

//overloading * operator

Rational operator * ( const Rational &m )

{

Rational t;

t.numerator = m.numerator * numerator;

t.denominator = m.denominator * denominator;

t.reduction();

return t;

}

//overloading / operator

Rational operator / ( Rational &v )

{

Rational t;

t.numerator = v.denominator * numerator;

t.denominator = denominator * v.numerator;

t.reduction();

return t;

}

//overloading = operator

boolean operator = (Rational &a, Rational &b){

if(a.numerator = b.numerator && a.denominator = b.denominator) return true;

else return false;

}

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