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

//writtern in c++// This class implements rational number of the type 2/3. Requi

ID: 3933534 • Letter: #

Question

//writtern in c++//

This class implements rational number of the type 2/3.

Requirements:

Write a class Fraction;

The private data consists of: int num, (numerator of the fraction) and int den (denominator of the fraction).

The public interface consists of:

  Constructors that have two int args, to allow setting rational to any legitimate value

    one int arg, to construct rationals with arg numerator and denominator 1.

Overloaded operators << and >> to allow writing to screen in form 325/430 and reading from the keyboard in the same format. Overloaded operators + - * / < <= > >= ==

Notes: either num or den, or both may contain a negative integer . Please use the following main function to test your program :

int main()
{
    cout <<"HELLO ";
    cout << "Testing declarations " << endl;
    cout << "Fraction x, y(2), z(-5,-6), w(1,-3);" << endl;
    Fraction x, y(2), z(-5,-6), w(1,-3);
    cout   << "z = " << z << ", y = " << y << ", z = " << z
            << ", w = " << w << endl;
    cout   << "Testing >> overloading: Enter a fraction in the format "
            << "integer _numerator/integer _denominator" << endl;
    cin >> x;
    cout << "You entered the equivalent of: " << x << endl;
    cout << z << " - (" << w << ") = " << z - w << endl;
    cout << "Testing the constructor and normalization routines: " << endl;
    y =Fraction(-128, -48);
    cout << "y =Fraction(-128, -48) outputs as " << y << endl;
    y =Fraction(-128, 48);
    cout << "y =Fraction(-128, 48 ) outputs as " << y << endl;
    y = Fraction(128,-48);
    cout << "y = Fraction(128, -48) outputs as " << y << endl;
    Fraction a(1,1);
    cout << "Fraction a(1,1); a outputs as: " << a << endl;
    Fraction ww = y*a;
    cout << y << " * " << a << " = " << ww << endl;
    w = Fraction(25,9);
    z = Fraction(3,5);
    cout   << "Testing arithmetic and relational operator overloading"
            << endl;
    cout << w << " * " << z << " = " << w * z << endl;
    cout << w << " + " << z << " = " << w + z << endl;
    cout << w << " - " << z << " = " << w - z << endl;
    cout << w << " / " << z << " = " << w / z << endl;
    cout << w << " < " << z << " = " << (w < z) << endl;
    cout << w << " < " << w << " = " << (w < w) << endl;
    cout << w << " <= " << z << " = " << (w <= z) << endl;
    cout << w << " <= " << w << " = " << (w <= w) << endl;
    cout << w << " > " << z << " = " << (w > z) << endl;
    cout << w << " > " << w << " = " << (w > w) << endl;
    cout << w << " >= " << z << " = " << (w >= z) << endl;
    cout << w << " >= " << w << " = " << (w >= w) << endl;
    w = Fraction(-21,9);
    z = Fraction(3,5);
    cout << w << " * " << z << " = " << w * z << endl;
    cout << w << " + " << z << " = " << w + z << endl;
    cout << w << " - " << z << " = " << w - z << endl;
    cout << w << " / " << z << " = " << w / z << endl;
    cout << w << " < " << z << " = " << (w < z) << endl;
    cout << w << " < " << w << " = " << (w < w) << endl;
    cout << w << " <= " << z << " = " << (w <= z) << endl;
    cout << w << " <= " << w << " = " << (w <= w) << endl;
    cout << w << " > " << z << " = " << (w > z) << endl;
    cout << w << " > " << w << " = " << (w > w) << endl;
    cout << w << " >= " << z << " = " << (w >= z) << endl;
    cout << w << " >= " << w << " = " << (w >= w) << endl;
return 0;
}

Explanation / Answer

int main()
{
    cout <<"HELLO ";
    cout << "Testing declarations " << endl;
    cout << "Fraction x, y(2), z(-5,-6), w(1,-3);" << endl;
    Fraction x, y(2), z(-5,-6), w(1,-3);
    cout   << "z = " << z << ", y = " << y << ", z = " << z
            << ", w = " << w << endl;
    cout   << "Testing >> overloading: Enter a fraction in the format "
            << "integer _numerator/integer _denominator" << endl;
    cin >> x;
    cout << "You entered the equivalent of: " << x << endl;
    cout << z << " - (" << w << ") = " << z - w << endl;
    cout << "Testing the constructor and normalization routines: " << endl;
    y =Fraction(-128, -48);
    cout << "y =Fraction(-128, -48) outputs as " << y << endl;
    y =Fraction(-128, 48);
    cout << "y =Fraction(-128, 48 ) outputs as " << y << endl;
    y = Fraction(128,-48);
    cout << "y = Fraction(128, -48) outputs as " << y << endl;
    Fraction a(1,1);
    cout << "Fraction a(1,1); a outputs as: " << a << endl;
    Fraction ww = y*a;
    cout << y << " * " << a << " = " << ww << endl;
    w = Fraction(25,9);
    z = Fraction(3,5);
    cout   << "Testing arithmetic and relational operator overloading"
            << endl;
    cout << w << " * " << z << " = " << w * z << endl;
    cout << w << " + " << z << " = " << w + z << endl;
    cout << w << " - " << z << " = " << w - z << endl;
    cout << w << " / " << z << " = " << w / z << endl;
    cout << w << " < " << z << " = " << (w < z) << endl;
    cout << w << " < " << w << " = " << (w < w) << endl;
    cout << w << " <= " << z << " = " << (w <= z) << endl;
    cout << w << " <= " << w << " = " << (w <= w) << endl;
    cout << w << " > " << z << " = " << (w > z) << endl;
    cout << w << " > " << w << " = " << (w > w) << endl;
    cout << w << " >= " << z << " = " << (w >= z) << endl;
    cout << w << " >= " << w << " = " << (w >= w) << endl;
    w = Fraction(-21,9);
    z = Fraction(3,5);
    cout << w << " * " << z << " = " << w * z << endl;
    cout << w << " + " << z << " = " << w + z << endl;
    cout << w << " - " << z << " = " << w - z << endl;
    cout << w << " / " << z << " = " << w / z << endl;
    cout << w << " < " << z << " = " << (w < z) << endl;
    cout << w << " < " << w << " = " << (w < w) << endl;
    cout << w << " <= " << z << " = " << (w <= z) << endl;
    cout << w << " <= " << w << " = " << (w <= w) << endl;
    cout << w << " > " << z << " = " << (w > z) << endl;
    cout << w << " > " << w << " = " << (w > w) << endl;
    cout << w << " >= " << z << " = " << (w >= z) << endl;
    cout << w << " >= " << w << " = " << (w >= w) << endl;
return 0;
}