C++ Class Coding Help Design and code a class to represent rational numbers. Rec
ID: 3860650 • Letter: C
Question
C++ Class Coding Help
Design and code a class to represent rational numbers. Recall that rational numbers have a numerator and a denominator both of which come from the set of integers. Common mathematical operations on rational numbers are addition, subtraction, multiplication, division, and reciprocal: Reciprocal of A/B = B/A Sum of A/C and B/C = A + B/C Sum of A/B and C/D = A*D + C*B/B*D Difference of A/C and B/C = A - B/C Difference of A/B and C/D = A*D - C*B/B*D Product of A/B and C/D = A*C/B*D Quotient of A/B and C/D = A/B * D/C = A*D/B*C Additive Inverse of A/B = A/B = -A/B = A/-B Comparison: A/B C*B A/B greaterthanorequalto C/D rightarrow A*D greaterthanorequalto C*B A/B greaterthanorequalto C/D rightarrow A*D greaterthanorequalto C*B A/B $eq: C/D rightarrow A*D &eq;: C*B A/B notequalto C/D rightarrow A*D notequalto C*BExplanation / Answer
#include<iostream>
#include<cmath>
#include<stdlib.h>
using namespace std;
class Fraction
{
public:
Fraction(int = 0, int = 1);//default constructor
void printData();
Fraction operator +(Fraction);
Fraction operator -(Fraction);
Fraction operator *(Fraction);
Fraction operator /(Fraction);
bool operator ==(Fraction &f2);
bool operator != (Fraction &f2);
bool operator >(Fraction &f2);
bool operator <(Fraction &f2);
friend ostream &operator<<( ostream &,const Fraction & );
friend istream &operator>>( istream &, Fraction &) ;
void recip();
private:
int num, denom;
};
ostream &operator<<( ostream &output,const Fraction &F ) {
output << " " << F.num <<"/" << F.denom;
return output;
}
istream &operator>>( istream &input, Fraction &F ) {
input >> F.num >> F.denom;
return input;
}
bool Fraction::operator== (Fraction &f2) //operator function
{
return ( this->num == f2.num && this->denom == f2.denom);
}
bool Fraction::operator!= (Fraction &f2) //operator function
{
return ( this->num != f2.num && this->denom != f2.denom);
}
bool Fraction::operator >(Fraction &f2) //operator function
{
return ( this->num > f2.num && this->denom == f2.denom);
}
bool Fraction::operator <(Fraction &f2) //operator function
{
return ( this->num < f2.num && this->denom != f2.denom);
}
Fraction::Fraction(int b, int c)
{
num = b;
denom = c;
}
Fraction Fraction::operator+(Fraction f1) //operator function
{
Fraction f;
f.denom = this->denom * f1.denom;
f.num = (this->denom * f1.num) + (f1.denom * this->num);
return f;
}
Fraction Fraction::operator -(Fraction f1)
{
Fraction f;
f.denom = this->denom * f1.denom;
f.num = (f1.denom * this->num) - (this->denom * f1.num);
return f;
}
Fraction Fraction::operator *(Fraction f1)
{
Fraction f;
f.num = this->num * f1.num;
f.denom = this->denom * f1.denom;
return f;
}
Fraction Fraction::operator /(Fraction f1)
{
Fraction f;
f.num = this->num * f1.denom;
f.denom = this->denom * f1.num;
return f;
}
void Fraction::printData()
{
cout << num << "/" << denom << endl;
}
void Fraction::recip()
{
int t;
t = num;
num = denom;
denom = t;
}
int main()
{
Fraction f1, f2, sum, diff, prod, quo;
cin >> f1;
cin >> f2;
cout << "The first fraction is: " <<f1 << endl << endl;
cout << "THe second fraction is: " <<f2 << endl << endl;
sum = f1 + f2;
diff = f1 - f2;
prod = f1 * f2;
quo = f1 / f2;
cout << "The sum is: " << sum << endl << endl;
cout << "The difference is: ";
diff.printData();
cout<< endl << endl;
cout << "The product is: " << prod << endl << endl;
cout << "The quotient is: " <<quo<< endl << endl;
if(f1==f2)
cout<< " The two fractions are equal!";
else
cout<< " The two fractions are not equal!";
if(f1>f2)
cout << " Fraction f1 is greater than f2!";
else
cout << " Fraction f1 is not greater than f2";
return 0;
}
output:
The first fraction is:
4/3
THe second fraction is:
6/7
The sum is:
46/21
The difference is: 10/21
The product is:
24/21
The quotient is:
28/18
The two fractions are not equal!
Fraction f1 is not greater than f2
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.