Advertisement
Guest User

Fraction Class

a guest
Jan 1st, 2015
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. class fraction
  4. {
  5.     int num,den;
  6. public:
  7.     fraction(int f=0,int i=1){num=f; den=i;}        //constructor
  8.     void reduce()
  9.     {
  10.         int m,n,j;
  11.         if(num>den){m=num; n=den;}
  12.         else{n=num; m=den;}
  13.         while(j>0)
  14.         {
  15.             j=m%n;
  16.             m=n;
  17.             n=j;
  18.         }
  19.         den=den/m;
  20.         num=num/m;
  21.     }
  22.     fraction(const fraction &a)
  23.     {
  24.         num=a.num;
  25.         den=a.den;
  26.     }
  27.     //*****************        overloaded operators       **********************//
  28.     fraction operator+(const fraction &f)
  29.     {
  30.         fraction f1(0,1);
  31.         f1.num= (this->num)*f.den + f.num*(this->den);
  32.         f1.den= (this->den)*f.den;
  33.         f1.reduce();
  34.         return f1;
  35.     }
  36.     fraction operator-(const fraction &f)
  37.     {
  38.         fraction f1(0,1);
  39.         f1.num= (this->num)*f.den - f.num*(this->den);
  40.         f1.den=(this->den)*f.den;
  41.         f1.reduce();
  42.         return f1;
  43.     }
  44.     fraction operator*(const fraction &f)
  45.     {
  46.         fraction f1(0,1);
  47.         f1.num= (this->num)*f.num;
  48.         f1.den=(this->den)*f.den;
  49.         f1.reduce();
  50.         return f1;
  51.     }
  52.     fraction operator/(const fraction &f)
  53.     {
  54.         fraction f1(0,1);
  55.         f1.num= (this->num)*f.den;
  56.         f1.den=(this->den)*f.num;
  57.         f1.reduce();
  58.         return f1;
  59.     }
  60.     friend bool operator >>(istream& inp,fraction &f)
  61.     {
  62.         int a;
  63.         cout<<"Numerator :\t";
  64.         inp>>a;
  65.         cout<<"Denominator :\t";
  66.         f.num=a;
  67.         inp>>a;
  68.         if(a==0){cout<<"\nUndefined form. Cannot proceed.\n"; return false;}
  69.         f.den=a;
  70.         f.reduce();
  71.         cout<<"\n";
  72.         return true;
  73.  
  74.     }
  75.     friend ostream& operator <<(ostream &out,fraction f)
  76.     {
  77.         if(f.num==0){out<<f.num<<" ";}
  78.         else if(f.den==1){out<<f.num<<" ";}
  79.         else{out<<f.num<<"/"<<f.den<<" ";}
  80.         return out;
  81.     }
  82. };
  83. int main()
  84. {
  85.     fraction f1,f2,res;
  86.     cout<<"Enter your fractions :\n";
  87.     if((cin>>f1)&&(cin>>f2))
  88.     {
  89.         res=f1+f2;
  90.         cout<<res;
  91.     }
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement