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

I\'m really confused by my teahcer\'s assignment. Here\'s the instructions - Exp

ID: 3766325 • Letter: I

Question

I'm really confused by my teahcer's assignment. Here's the instructions - Expand your Fraction class to include all of the following  (all examples are for a fraction half that has a numerator of 1 and a denominator of 2):

Overload ==, <, <=, >, >= operators (use the decimal values to compare);

Overload = operator (assigns the numerator and denominator to the fraction);

Overload ++ so that 1/3 becomes 2/3 for example.

Overload -- so that 2/3 becomes 1/3 for eaxample.

It is OK if the numerator is negative.Submit the following as part of this assignment:

Instead of a flowchart, you are to include a representation of the class as shown on page 710 of the text.

The class definition and main in one cpp file (similar to the one for the Rectangle example.)

Sample output showing several different fractions and an example where the user tried to assign 0 to the denominator. Your output should show all of the methods listed above.

This is building upon the followin Fraction Class I've already written -

#include <iostream>

#include <cmath>

#include <sstream>

using namespace std;

class Fraction

{

    private:

        int numerator;

        int denominator;

    public:

    Fraction(){};

    Fraction(int num, int denom)

    {

        numerator = num;

        if (denom==0)

            exit(0);

        else if (denom!=0)

            denominator = denom;

    }

   

    void setNumerator(double num)

    {

        numerator=num;

    }

   

    void setDenominator(double denom)

    {

         if (denom==0)

            exit(0);

        else if (denom != 0)

        denominator=denom;

    }

   

    double toDecimal(double num, double denom)

    {

        return num/denom;

    }

   

    string toString(double number)

    {

        string String=static_cast<ostringstream*>(&(ostringstream() << number) )->str();

        return String;

    }

   

    double reduce(double num, double denom)

    {

        if(denom==0)

        return num;

       

        else

        return reduce(denom, fmod(num, denom));

    }

};

int main()

{

    double num;

    double denom;   

    Fraction frac;

   

    cout << "Please enter the numerator: ";

    cin >> num;

    frac.setNumerator(num);

   

    cout << "Please enter the denominator: ";

    cin >> denom;

    frac.setDenominator(denom);

   

    Fraction(num, denom);

    cout << "Your fraction is: " << num << "/" << denom << "." << endl;

    cout << "As a decimal your fraction is: " << frac.toDecimal(num, denom) << "." << endl;

    cout << "Your fraction as a string is: " << frac.toString(num) << "/" << frac.toString(denom) << "." << endl;

    int gcd = frac.reduce(num, denom);

    cout << "Your fraction reduced is: " << num/gcd << "/" << denom/gcd << "." << endl;

   

    return 0;

}

Explanation / Answer

working c++ code for overloading compiled on ideone:

#include <iostream>
#include <cmath>
#include <sstream>
using namespace std;

class Fraction
{
private:
int numerator;
int denominator;
public:
Fraction(){};
Fraction(int num, int denom)
{
numerator = num;
if (denom==0)
exit(0);
else if (denom!=0)
denominator = denom;
}

void setNumerator(double num)
{
numerator=num;
}

void setDenominator(double denom)
{
if (denom==0)
exit(0);
else if (denom != 0)
denominator=denom;

}

double toDecimal(double num, double denom)
{
return num/denom;
}

string toString(double number)
{
string String=static_cast<ostringstream*>(&(ostringstream() << number) )->str();
return String;
}

double reduce(double num, double denom)
{
if(denom==0)
return num;

else
return reduce(denom, fmod(num, denom));
}
Fraction operator++ (int)
{
   Fraction f1,f;
   f.numerator=1;
   f1.numerator = this->numerator+f.numerator;
   f1.denominator = this->denominator;
   return f1;
}

Fraction operator-- (int)
{
   Fraction f1,f;
   f.numerator=1;
   f1.numerator = this->numerator-f.numerator;
   f1.denominator = this->denominator;
   return f1;
}
};

int main()
{
double num;
double denom;   
Fraction frac,frac1;

cout << "Please enter the numerator: ";
cin >> num;
frac.setNumerator(num);

cout << "Please enter the denominator: ";
cin >> denom;
frac.setDenominator(denom);

Fraction(num, denom);

cout << "Your fraction is: " << num << "/" << denom << "." << endl;
cout << "As a decimal your fraction is: " << frac.toDecimal(num, denom) << "." << endl;
cout << "Your fraction as a string is: " << frac.toString(num) << "/" << frac.toString(denom) << "." << endl;
frac1=frac++;
cout<<"changing fraction now"<<endl;
cout << "Your fraction is: " << num << "/" << denom << "." << endl;
int gcd = frac.reduce(num, denom);
cout << "Your fraction reduced is: " << num/gcd << "/" << denom/gcd << "." << endl;

return 0;
}