Question: I need help editing my code, so that the fractions that are output are simplified. For example, the product of 9/8 * 2/3 should be

I need help editing my code, so that the fractions that are output are simplified. For example, the product of 9/8 * 2/3 should be = 3/4, not 18/24. And, the quotient of 12/8 202/303 should be = 9/4, not 3636/1616. This code is broken down into 3 files which are all run together in a single project. I believe the one that needs the editing to get the simplified fractions is the second file. The third file of source could should NOT be edited at all. Here is my current complete output, and source code for each file:

I need help editing my code, so that the fractions that are

FIRST FILE

//Specification File fraction.h

class fraction

{

public: //operations

fraction(); //default constructor

fraction (int, int); //parameterized constructor

void showFraction() const; //observer

fraction AddedTo(fraction) const; //observer

fraction Subtract(fraction) const; //observer

fraction MultipliedBy(fraction) const; //observer

fraction DividedBy(fraction) const; //observer

bool isGreaterThan(fraction) const;

void getFraction();

private: //instance variables

int numerator;

int denominator;

};

SECOND FILE

#include

#include "fraction.h"

using namespace std;

fraction::fraction() //default constructor

{

numerator = 0;

denominator = 1;

}

fraction::fraction (int num, int denom) //parameterized constructor

{

numerator = num;

denominator = denom;

}

void fraction::showFraction() const //observer

{

cout

}

fraction fraction :: AddedTo(fraction otherfraction) const

//Pre: Both operands have been initialized.

//Post: fraction sum is returned.

{

fraction result;

result.numerator = (numerator * otherfraction.denominator) + (otherfraction.numerator * denominator);

result.denominator = denominator * otherfraction.denominator;

return result;

}

fraction fraction :: Subtract(fraction otherfraction) const

//Pre: Both operands have been initialized.

//Post: fraction difference is returned.

{

fraction result;

result.numerator = (numerator * otherfraction.denominator) - (otherfraction.numerator * denominator);

result.denominator = denominator * otherfraction.denominator;

return result;

}

fraction fraction ::MultipliedBy(fraction otherfraction) const

//Pre: Both operands have been initialized.

//Post: fraction product is returned.

{

fraction result;

result.numerator = numerator * otherfraction.numerator;

result.denominator = denominator * otherfraction.denominator;

return result; //NEED TO ADD REDUCTION FORMULA

}

fraction fraction :: DividedBy(fraction otherfraction) const

//Pre: Both operands have been initialized.

//Post: fraction quotient is returned.

{

fraction result;

result.numerator = numerator * otherfraction.denominator;

result.denominator = denominator * otherfraction.numerator;

return result;

}

bool fraction :: isGreaterThan(fraction otherfraction) const

{

double fractionOne = (double)numerator / (double)denominator;

double fractionTwo = (double)otherfraction.numerator / (double) otherfraction.denominator;

if (fractionOne > fractionTwo)

{

return true;

}

else

{

return false;

}

}

void fraction :: getFraction()

{

cout

cout

cin >> numerator;

cout

cin >> denominator;

while (denominator ==0)

{

cout

cin >> denominator;

}

}

THIRD FILE - DO NOT EDIT THIS SOURCE CODE

/*Client.cpp is set-up as a fraction class implementation and test driver program - DO NOT CHANGE SOURCE CODE

All necessary class objects are declared and defined here to test various class related operations.

HINT: see comments for specific class related function calls*/

#include

#include "fraction.h"

using namespace std;

int main()

{

fraction f1(9,8); //calling a parameterized class constructor

fraction f2(2,3);

fraction result; //calling a default class constructor

const fraction f3(12, 8);

const fraction f4(202, 303);

fraction f5,f6;

cout

cout

cout

cout

result.showFraction(); //calling a void "observer" function

cout

cout

cout

cout

f1.showFraction();

cout

f2.showFraction();

cout

result = f1.AddedTo(f2); //a class binary operation - a value-returning "observer" function

result.showFraction();

cout

cout

f1.showFraction();

cout

f2.showFraction();

cout

result = f1.Subtract(f2); //a class binary operation - a value-returning "observer" function

result.showFraction();

cout

cout

f1.showFraction();

cout

f2.showFraction();

cout

result = f1.MultipliedBy(f2); //a class binary operation - a value-returning "observer" function

result.showFraction();

cout

result = f3.DividedBy(f4); //a class binary operation - a value-returning "observer" function

cout

f3.showFraction();

cout

f4.showFraction();

cout

result.showFraction();

cout

cout

cout

f5.getFraction(); //a class input operation - a transformer or setter function

f5.showFraction(); //a class output operation - an observer or getter function

cout

f6.getFraction();

f6.showFraction();

cout

cout

cout

if (f5.isGreaterThan(f6)){ //a class relational expression - boolean operation/function

f5.showFraction();

cout

f6.showFraction();

cout

} else {

f5.showFraction();

cout

f6.showFraction();

cout

}

cout

cout

// system ("PAUSE");

return 0;

}

The result object starts off at 0/1 Arithmetic operations with fraction objects stored in the results class object The sum of 9/8 and 2/3 is 43/24 The difference of 9/8 and 2/3 is 11/24 The product of 9/8 and 2/3 is 18/24 The quotient of 12/8 and 202/303 is 3636/1616 Input and Output operations for two new class objects Enter values for a fraction obiect Numerator: 12 Denominator: 13 12/13 Enter values for a fraction object Numerator: 5 Denominator: 6 5/6 A Boolean operation comparing two class objects 12/13 is greater than 5/6 Fraction class implementation test now successfully concluded Program ended with exit code: 0

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!