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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.