Answers
#include<bits/stdc++.h>
using namespace std;
/*
a/b+c/d=(a*d+b*c)/b*d
a/b-c/d=(a*d-b*c)/b*d
a/b*c/d=(a*c)/b*d
*/
class Rational
{ private:
int numerator,denominator; //private variables
public:
//constructor
Rational()
{
numerator=0;
denominator=1;
simplify();//to simplify numerator and denominator
}
//simplifies the fraction
void simplify()
{
int x=__gcd(numerator,denominator); //find gcd
numerator=numerator/x; //divide the gcd
denominator=denominator/x;
}
//constructor
Rational(int numerator,int denominator)
{
setNumerator(numerator); //set numerator
setDenominator(denominator);//set denominator
simplify();
}
//add function , returns a Rational object
Rational add( Rational obj)//add
{
Rational temp,r;
//finding numerator
int n=numerator*obj.denominator+obj.numerator*denominator;
int d=denominator*obj.denominator; //denominator
//simplify fraction
//move - sign to numerator
if(d<0)
{
d=d*-1;
n=n*-1;
}
//return new object
return Rational(n,d);
}
Rational sub(Rational obj)//subtract
{
Rational temp,r;
//find numerator
int n=numerator*obj.denominator-obj.numerator*denominator;
int d=denominator*obj.denominator;
//simplify the fraction(4/4 is reduced to 1/1)
int x=__gcd(n,d);
n=n/x;
d=d/x;
//for -ve sign
if(d<0)
{
d=d*-1;
n=n*-1;
}
return Rational(n,d);
}
Rational multiply(Rational obj)//multiply
{
Rational temp,r;
//numerator
int n=numerator*obj.numerator;
int d=denominator*obj.denominator;
//simplify
int x=__gcd(n,d);
n=n/x;
d=d/x;
//-ve sign
if(d<0)
{
d=d*-1;
n=n*-1;
}
return Rational(n,d);
}
Rational divide(Rational obj)
{
int n=numerator*obj.denominator;
int d=denominator*obj.numerator;
return Rational(n,d);
}
//function to set numerator
void setNumerator(int n)
{
numerator=n;
}
//function to set denominator
void setDenominator(int n)
{
denominator=n;
}
void printRational()
{
cout<<numerator<<"/"<<denominator;
}
void printFloat()
{
cout<<(float)numerator/denominator<<endl;
}
};
int main(int argc, char const *argv[])
{
/* code */
Rational a(1,3),b(7,8),c;
c=a.add(b); //add
a.printRational();//print a
cout<<" + ";
b.printRational(); //print b
cout<<" = " ; //print =
//add a+b
c.printRational(); //print c
cout<<endl;
c.printRational();
cout<<" = ";
c.printFloat();
cout<<endl;
//subtraction
c=a.sub(b);//a-b
a.printRational();
cout<<" - ";
b.printRational();
cout<<" = " ;
//add a+b
c.printRational(); //print
cout<<endl;
c.printRational();
cout<<" = ";
c.printFloat();
cout<<endl;
c=a.multiply(b);
a.printRational();
cout<<" * ";
b.printRational();
cout<<" = " ;
//add a+b
c.printRational(); //print
cout<<endl;
c.printRational();
cout<<" = ";
c.printFloat();
cout<<endl;
c=a.divide(b);
a.printRational();
cout<<" / ";
b.printRational();
cout<<" = " ;
//add a+b
c.printRational(); //print
cout<<endl;
c.printRational();
cout<<" = ";
c.printFloat();
cout<<endl;
return 0;
}