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:
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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started