//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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.