Extend class Fraction(codes are on the bottom)
- add a parameterized constructor
- overload + and - operators to handle the following:
- integer + Fraction
- integer - Fraction
- Fraction + integer
- Fraction - integer
- use the class in main()
- instantiate 2 Fractions using the parameterized constructor
- add 2 Fractions
- add integer to a Fraction
- add Fraction to an integer
- subtract Fraction from integer
- subtract integer from Fraction
- display the results for each like an equation -- use overloaded <<
No prompting necessary, you can hard code the test values.
All display is done in main. No displaying by member functions!
#include <string.h>
#include <iostream>
#include <iomanip>
using namespace std;
class Fraction
{
public:
int numerator, denominator;
Fraction(){}
Fraction(int num, int den)
{
numerator = num;
denominator = den;
}
void setNumerator(int num)
{
numerator = num;
}
int getNumerator()
{
return numerator;
}
void setDenominator(int den)
{
denominator = den;
}
int getDenominator()
{
return denominator;
}
Fraction operator +(Fraction const &obj)
{
int num = numerator*obj.denominator+denominator*obj.numerator;
int den = denominator*obj.denominator;
return Fraction(num,den);
}
Fraction operator -(Fraction const &obj)
{
int num = numerator*obj.denominator-denominator*obj.numerator;
int den = denominator*obj.denominator;
return Fraction(num,den);
}
};
ostream & operator << (ostream &out, const Fraction &c)
{
out << c.numerator<<"/"<<c.denominator;
return out;
}
int main()
{
cout<<"Enter numerator and denominator for fraction 1: "<<endl;
int num1, den1, num2, den2;
cin>>num1>>den1;
cout<<"Enter numerator and denominator for fraction 2: "<<endl;
cin>>num2>>den2;
Fraction a;
Fraction b;
a.setNumerator(num1);
a.setDenominator(den1);
b.setNumerator(num2);
b.setDenominator(den2);
cout<<a<<"+"<<b<<"="<<(a+b)<<endl;
cout<<a<<"-"<<b<<"="<<(a-b)<<endl;
return 0;
}
C++ Program:
#include <string.h>
#include <iostream>
#include <iomanip>
using namespace std;
class Fraction
{
public:
int numerator, denominator;
Fraction(){}
Fraction(int num, int den)
{
numerator = num;
denominator = den;
}
void setNumerator(int num)
{
numerator = num;
}
int getNumerator()
{
return numerator;
}
void setDenominator(int den)
{
denominator = den;
}
int getDenominator()
{
return denominator;
}
Fraction operator +(Fraction const &obj)
{
int num =
numerator*obj.denominator+denominator*obj.numerator;
int den = denominator*obj.denominator;
return Fraction(num,den);
}
Fraction operator +(int val)
{
Fraction temp(val, 1);
int num =
numerator*temp.denominator+denominator*temp.numerator;
int den = denominator*temp.denominator;
return Fraction(num,den);
}
Fraction operator -(Fraction const &obj)
{
int num =
numerator*obj.denominator-denominator*obj.numerator;
int den = denominator*obj.denominator;
return Fraction(num,den);
}
Fraction operator -(int val)
{
Fraction temp(val, 1);
int num =
numerator*temp.denominator-denominator*temp.numerator;
int den = denominator*temp.denominator;
return Fraction(num,den);
}
// Adding Integer from Fraction
friend Fraction operator+(const int val, const Fraction
&c);
// Subtracting Integer from Fraction
friend Fraction operator-(const int val, const Fraction
&c);
};
//Implementing function
Fraction operator+(const int val, const Fraction &c)
{
Fraction temp(val, 1);
int num =
temp.numerator*c.denominator+temp.denominator*c.numerator;
int den = temp.denominator*c.denominator;
return Fraction(num,den);
}
//Overloading Integer - Fraction
Fraction operator-(const int val, const Fraction &c)
{
Fraction temp(val, 1);
int num =
temp.numerator*c.denominator-temp.denominator*c.numerator;
int den = temp.denominator*c.denominator;
return Fraction(num,den);
}
ostream & operator << (ostream &out, const
Fraction &c)
{
out << c.numerator<<"/"<<c.denominator;
return out;
}
int main()
{
cout<<"Enter numerator and denominator for fraction 1:
"<<endl;
int num1, den1, num2, den2;
cin>>num1>>den1;
cout<<"Enter numerator and denominator for fraction 2:
"<<endl;
cin>>num2>>den2;
Fraction a;
Fraction b;
a.setNumerator(num1);
a.setDenominator(den1);
b.setNumerator(num2);
b.setDenominator(den2);
cout<<a<<"+"<<b<<"="<<(a+b)<<endl;
cout<<a<<"-"<<b<<"="<<(a-b)<<endl;
cout<<a<<"+"<<5<<"="<<(a+5)<<endl;
cout<<a<<"-"<<2<<"="<<(a-2)<<endl;
cout<<7<<"+"<<b<<"="<<(7+b)<<endl;
cout<<3<<"-"<<b<<"="<<(3-b)<<endl;
return 0;
}
____________________________________________________________________________________________________
Sample Run:

Extend class Fraction(codes are on the bottom) - add a parameterized constructor - overload...