Write the methods to implement the C class FullFraction disc
Write the methods to implement the C++ class FullFraction, discussed in class and outlined here. Test your implementation with the assign_FullFraction() code below.(No header file,all code in one file)
Maintain fractions internally in lowest terms - the best place to do this is in setFraction()
Be sure to maintain the sign of the fraction correctly
Avoid a 0 in the denominator by forcing the fraction to 0
Enhance toString() to display a mixed fraction (whole numbers and fraction) when the numerator is greater than the denominator
The output of the test driver is:
Solution
Hi, I have implemented functionality.
Please let me know in case of any issue.
#include <iostream>
using namespace std;
class FullFraction{
int numerator;
int denominator;
int gcd(int x, int y);
public:
FullFraction();
FullFraction(int n, int d);
FullFraction add(FullFraction rop);
FullFraction subtract(FullFraction rop);
FullFraction multiply(FullFraction rop);
FullFraction divide(FullFraction rop);
int getNumerator() const;
void setFullFraction(int numerator, int denominator);
int getDenominator() const;
float getDecimal() const;
std::string toString();
};
int FullFraction::gcd(int x, int y)
{
if (x <= 1 || y <= 1)
return 1;
while (x != y)
{
if (x > y)
{
if (0 == (x = x % y))
return y;
} else
{
if (0 == (y = y % x))
return x;
}
}
return x;
}
FullFraction::FullFraction(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;
}
FullFraction::FullFraction(){
numerator = 1;
denominator = 0;
}
FullFraction FullFraction::add(FullFraction frac1){
int num = (numerator * frac1.denominator)+(frac1.numerator*denominator);
int denom = denominator * frac1.denominator;
int gc = gcd(num, denom);
return FullFraction(num/gc, denom/gc);
}
FullFraction FullFraction::subtract(FullFraction frac1){
int num = (numerator * frac1.denominator)-(frac1.numerator*denominator);
int denom = denominator * frac1.denominator;
int gc = gcd(num, denom);
return FullFraction(num/gc, denom/gc);
}
FullFraction FullFraction::multiply(FullFraction frac1){
int num = numerator * frac1.numerator;
int denom = denominator * frac1.denominator;
int gc = gcd(num, denom);
return FullFraction(num/gc, denom/gc);
}
FullFraction FullFraction::divide(FullFraction frac1){
int num = numerator * frac1.denominator;
int denom = denominator * frac1.numerator;
int gc = gcd(num, denom);
return FullFraction(num/gc, denom/gc);
}
int FullFraction::getNumerator() const{
return numerator;
}
int FullFraction::getDenominator() const{
return denominator;
}
void FullFraction::setFullFraction(int numerator, int denominator){
this->numerator = numerator;
this->denominator = denominator;
}
float FullFraction::getDecimal() const{
return numerator/denominator;
}
std::string FullFraction::toString(){
if(denominator < 0){
numerator = (-numerator);
denominator = (-denominator);
}
if(denominator == 1)
return to_string(numerator)+\" \"+to_string(numerator);
else
return to_string(numerator) + \"/\" + to_string(denominator)+\" \"+to_string(numerator/denominator);
}
static int assign_FullFraction()
{
FullFraction f0;
FullFraction f1(2, 2);
FullFraction f2(2, 7);
FullFraction f3(1, -3);
//cout << f1.toString() << \" + \" << f0.toString() << \" = \" << f1.add(f0).toString()<< endl;
cout << f0.toString() << \" + \" << f1.toString() << \" = \" << f0.add(f1).toString()<< endl;
cout << f1.toString() << \" * \" << f2.toString() << \" = \" << f1.multiply(f2).toString()<< endl;
cout << f1.toString() << \" / \" << f3.toString() << \" = \" << f1.divide(f3).toString()<< endl;
cout << f2.toString() << \" + \" << f3.toString() << \" = \" << f2.add(f3).toString()<< endl;
//cout << f2.toString() << \" - \" << f3.toString() << \" = \" << f2.subtract(f3).toString()<< endl;
cout << f2.toString() << \" * \" << f3.toString() << \" = \" << f2.multiply(f3).toString()<< endl;
cout << f3.toString() << \" / \" << f2.toString() << \" = \" << f3.divide(f2).toString()<< endl;
cout << f2.toString() << \" / \" << f3.toString() << \" = \" << f2.divide(f3).toString()<< endl;
cout << \"the numerator of \" << f3.toString() << \" is \" << f3.getNumerator()<< endl;
cout << \"the denominator of \" << f3.toString() << \" is \" << f3.getDenominator()<< endl;
cout << \"the decimal value of \" << f3.toString() << \" is \" << f3.getDecimal()<< endl;
return 0;
}
int main(){
assign_FullFraction();
return 0;
}


