Question: C++ simple friction question. Please check on fraction.cpp file(overloaded operating) What I missed. friction.h class Fraction { private: int getGCD( int num1, int num2 );

C++ simple friction question. Please check on fraction.cpp file(overloaded operating) What I missed.

friction.h

class Fraction

{

private:

int getGCD( int num1, int num2 );

int numerator;

int denominator;

public:

Fraction()

{

numerator = 0;

denominator = 0;

}

Fraction(int n, int d);

void reduce();

int getNumerator();

int getDenominator();

void setNumerator(int n);

void setDenominator(int d);

const Fraction operator+(Fraction rhs);

const Fraction operator-(Fraction rhs);

const Fraction operator*(Fraction rhs);

const Fraction operator/(Fraction rhs);

bool operator==(Fraction rhs);

friend ostream& operator<< (ostream& output, const Fraction& Fract);

friend istream& operator>> (istream& input, Fraction& Fract);

};

friction.cpp

#include "Fraction.h"

#include

#include

using namespace std;

// Find the greatest common denominator (GCD)

// For reducing

int Fraction::getGCD( int num1, int num2 )

{

int remainder = num2 % num1;

if ( remainder != 0 )

return getGCD( remainder, num1 );

return num1;

}

// Reduce/simplify a fraction

void Fraction::reduce()

{

// Alter this function later to adjust for negative values

int gcd = getGCD(numerator, denominator);

numerator /= gcd;

denominator /= gcd;

if (denominator < 0) {

numerator == -numerator;

denominator == -denominator;

}

else if (numerator < 0 && denominator < 0)

{

numerator == -numerator;

denominator == -denominator;

}

}

Fraction::Fraction(int n, int d)

{

n = numerator;

d = denominator;

}

int Fraction::getNumerator()

{

return numerator;

}

void Fraction::setNumerator(int n)

{

numerator = n;

}

int Fraction::getDenominator()

{

return denominator;

}

void Fraction::setDenominator(int d)

{

denominator = d;

}

ostream& operator<< (ostream& output, const Fraction& Fract) {

output << Fract.numerator << '/' << Fract.denominator;

return output;

}

istream& operator>> (istream& input, Fraction& Fract) {

char slash;

input >> Fract.numerator >> slash >> Fract.denominator;

return input;

}

const Fraction Fraction::operator+(Fraction rhs)

{

Fraction add(numerator*rhs.denominator + rhs.numerator*denominator, denominator*rhs.denominator);

reduce();

return add;

}

const Fraction Fraction::operator-(Fraction rhs)

{

Fraction sub(numerator*rhs.denominator - rhs.numerator*denominator, denominator*rhs.denominator);

reduce();

return sub;

}

const Fraction Fraction::operator*(Fraction rhs)

{

Fraction mult(numerator*rhs.numerator, denominator*rhs.denominator);

reduce();

return mult;

}

const Fraction Fraction::operator/(Fraction rhs)

{

Fraction div(numerator*rhs.denominator, denominator*rhs.numerator);

reduce();

return div;

}

bool Fraction::operator==(Fraction rhs)

{

Fraction reduce();

if (rhs.numerator == numerator && rhs.denominator == denominator)

return true;

else

return false;

}

What I missed on here?

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!