Question: Re-write the add method for your Fraction class (from lab3) as an overloaded addition (+) operator. Your main program should perform the same as in

Re-write the add method for your Fraction class (from lab3) as an overloaded addition (+) operator. Your main program should perform the same as in lab3. If time permits (but not required), implement additional mathematical operations by overloading other operators in your Fraction class. As in lab4, implement your Fraction class in separate source and header files.

Compile your program using the GNU C++ compiler, g++, as follows:

jdoe@shaula % g++ -c Fraction.C

jdoe@shaula % g++ -c lab5.C

jdoe@shaula % g++ -o lab5 lab5.o Fraction.o

(lab5 is the resultant program executable name)

To execute your program:

jdoe@shaula % lab5

here was lab3.cpp

// Lab3 - Re-designed lab2 using C++ classes

#include

using namespace std;

#include // contains declaration for abs function

class Fraction

{

private:

// DATA MODEL

int numerator;

int denominator;

public:

// OPERATIONS ON DATA MODEL

// Constructor

Fraction() { numerator=0; denominator=0; }

// Class-specific methods

Fraction Add( Fraction * );

void Simplify();

// Print method

void Print();

// Access methods

void SetNumerator( int );

void SetDenominator( int );

int GetNumerator();

int GetDenominator();

};

//

// Method Definitions for Fraction class

//

// Set/Get functions

void Fraction::SetNumerator( int n )

{

numerator = n;

}

void Fraction::SetDenominator( int d )

{

denominator = d;

}

int Fraction::GetNumerator()

{

return numerator;

}

int Fraction::GetDenominator()

{

return denominator;

}

// Add fractions

Fraction Fraction::Add( Fraction *f2 )

{

Fraction f3;

f3.SetNumerator( ( numerator*f2->denominator +

denominator*f2->numerator ) );

f3.SetDenominator( denominator*f2->denominator );

return f3;

}

// Simplify fraction

void Fraction::Simplify()

{

int a,b,c,gcd;

if( denominator < 0)

{

denominator = -denominator;

numerator = -numerator;

};

a = abs(numerator);

b = abs(denominator);

c = a % b;

while(c)

{

a = b;

b = c;

c = a % b;

}

gcd = b;

numerator /= gcd;

denominator /= gcd;

}

// Print fraction

void Fraction:: Print()

{

cout << numerator << "/" << denominator;

}

main()

{

Fraction f1, f2, result;

int tmpN, tmpD;

char divideSign;

// Fraction 1

cout << "Enter fraction 1: /" << endl;

cin >> tmpN >> divideSign >> tmpD;

f1.SetNumerator( tmpN );

f1.SetDenominator( tmpD );

// Fraction 2

cout << "Enter fraction 2: /" << endl;

cin >> tmpN >> divideSign >> tmpD;

f2.SetNumerator( tmpN );

f2.SetDenominator( tmpD );

// Add and simplify

result = f1.Add( &f2 );

result.Simplify();

// Print - method 1

f1.Print(); cout << " + ";

f2.Print(); cout << " = ";

result.Print(); cout << endl;

// Print - method 2

cout << f1.GetNumerator() << "/" << f1.GetDenominator() << " + ";

cout << f2.GetNumerator() << "/" << f2.GetDenominator() << " = ";

cout << result.GetNumerator() << "/" << result.GetDenominator() << endl;

}

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!