Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Exercise :- Read the documentation of the header file carefully. Four of the

ID: 3724004 • Letter: C

Question

C++

Exercise :- Read the documentation of the header file carefully. Four of the function

implementations have documentation and the others do not. Explain how these four

are different.

Exercise :- Fill in the missing code in the implementation file, and compile

fraction.cpp. Were there many bugs in your file? Describe any problems that you

had.

Exercise :- Write a driver that uses class Fraction to do the following calculations:

1/2 + 1/4

1/2 1/4

1/2 * 1/2

1/2 / 1/2

Write the output clearly labeled.

// Header file fraction.h declares class Fraction.

class Fraction

// Class Fraction represents the numerator and

// denominator of a fraction.

{

public:

// Constructors

Fraction();

// Post: Numerator and denominator have been set to zero

Fraction(initNumerator, initDenominator);

// Post: Numerator has been set to initNumerator;

// denominator has been set to initDenominator.

Fraction Add(Fraction frac1) const;

// Post: self + frac1 is returned.

Fraction Subtract(Fraction frac1) const;

// Post: self - frac1 is returned.

Fraction Multply(Fraction frac1) const;

// Post: self * frac1 is returned.

Fraction Divide(Fraction frac1) const;

// Post: self / frac1 is returned.

int GetNumerator() const;

// Post: Numerator of frac1 is returned.

int GetDenominator() const;

// Post: Denominator of frac1 is returned.

private:

int numerator;

int denominator;

};

____________________________________________________________

//*******************************************************

// Implementation file fraction.cpp implements the member

// functions of class Fraction.

#include "fraction.h"

Fraction::Fraction()

{

// FILL IN Code for default constructor.

}

Fraction::Fraction(initNumerator, initDenominator)

{

// FILL IN Code for default constructor.

}

Fraction Fraction::Add(Fraction frac1) const

// Pre: frac1 and self have been initialized.

// Post: frac1 + self is returned in reduced form.

{

// FILL IN Code.

}

Fraction Fraction::Subtract(Fraction frac1) const

// Pre: frac1 and self have been initialized.

// Post: self - frac1 is returned in reduced form.are

{

// FILL IN Code.

}

Fraction Fraction::Multiply(Fraction frac1) const

// Pre: frac1 and self have been initialized.

// Post: self - frac1 is returned in reduced form.are

{

// FILL IN Code.

}

Fraction Fraction::Divide(Fraction frac1) const

// Pre: frac1 and self have been initialized.

// Post: self - frac1 is returned in reduced form.are

{

// FILL IN Code.

}

int Fraction::GetNumerator() const

{

// FILL IN Code.

}

int Fraction::GetDenominator() const

{

// FILL IN Code.

}

Explanation / Answer

######### fraction.h ##########

// Header file fraction.h declares class Fraction.

class Fraction

{

public:

// Constructors

Fraction();

// Post: Numerator and denominator have been set to zero

Fraction(int initNumerator, int initDenominator);

// Post: Numerator has been set to initNumerator;

// denominator has been set to initDenominator.

Fraction Add(Fraction sfrac1);

// Post: self + frac1 is returned.

Fraction Subtract(Fraction frac1);

// Post: self - frac1 is returned.

Fraction Multply(Fraction frac1);

// Post: self * frac1 is returned.

Fraction Divide(Fraction frac1);

// Post: self / frac1 is returned.

int GetNumerator() const;

// Post: Numerator of frac1 is returned.

int GetDenominator() const;

// Post: Denominator of frac1 is returned.

void Print();

private:

// Calculates the greates common divisor with Euclid's algorithm both

//arguments have to be positive

int gcd(int a, int b);

int numerator;

int denominator;

};

############# fraction.cpp ############

#include "fraction.h"

#include <iostream>

// Constructors

Fraction::Fraction(){

numerator = 0;

denominator = 1;

}

// Post: Numerator and denominator have been set to zero

Fraction::Fraction(int initNumerator, int initDenominator){

if(initDenominator == 0){

std::cout<<"Denominator can not be zero"<<std::endl;

exit(0);

}

int gc = gcd(initNumerator, initDenominator);

numerator = initNumerator/gc;

denominator = initDenominator/gc;

}

// Post: Numerator has been set to initNumerator;

// denominator has been set to initDenominator.

Fraction Fraction::Add(Fraction frac1){

int num = (numerator * frac1.denominator)+(frac1.numerator*denominator);

int denom = denominator * frac1.denominator;

  

int gc = gcd(num, denom);

return Fraction(num/gc, denom/gc);

}

// Post: self + frac1 is returned.

Fraction Fraction::Subtract(Fraction frac1){

int num = (numerator * frac1.denominator)-(frac1.numerator*denominator);

int denom = denominator * frac1.denominator;

  

int gc = gcd(num, denom);

return Fraction(num/gc, denom/gc);

}

// Post: self - frac1 is returned.

Fraction Fraction::Multply(Fraction frac1){

int num = numerator * frac1.numerator;

int denom = denominator * frac1.denominator;

  

int gc = gcd(num, denom);

return Fraction(num/gc, denom/gc);

}

// Post: self * frac1 is returned.

Fraction Fraction::Divide(Fraction frac1){

int num = numerator * frac1.denominator;

int denom = denominator * frac1.numerator;

  

int gc = gcd(num, denom);

return Fraction(num/gc, denom/gc);

}

// Post: self / frac1 is returned.

int Fraction::GetNumerator() const{

return numerator;

}

// Post: Numerator of frac1 is returned.

int Fraction::GetDenominator() const{

return denominator;

}

// Post: Denominator of frac1 is returned.

void Fraction::Print(){

if(denominator < 0){

numerator = (-numerator);

denominator = (-denominator);

}

if(denominator == 1)

std::cout<<numerator<<std::endl;

else

std::cout<<numerator<<"/"<<denominator<<std::endl;

}

// Calculates the greates common divisor with Euclid's algorithm both arguments have to be positive

int Fraction::gcd(int a, int b) {

while (a != b) {

if (a > b) {

a -= b;

}else {

b -= a;

}

}

return a;

}

######### test code ###########

#include <iostream>

#include "fraction.h"

using namespace std;

int main(){

Fraction f1(4,2);

cout<<"F1: ";

f1.Print();

cout<<"F2: ";

Fraction f2(5,6);

f2.Print();

cout<<"F1+F2: ";

Fraction f3 = f1.Add(f2);

f3.Print();

return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote