Nisheeth

Fraction Class

Jul 8th, 2011
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.15 KB | None | 0 0
  1. #include "default.h"    //Includes the Header files
  2.  
  3. typedef long int Long;
  4.  
  5. class CFraction;
  6. class Fraction_t;
  7.  
  8.  
  9. Long HCF(Long a, Long b)
  10. {
  11.         if(b == 0)
  12.         {
  13.                 return a;
  14.         }
  15.         else
  16.         {
  17.                 return HCF(b, a % b);
  18.         }
  19. }
  20.  
  21. class Fraction_t
  22. {
  23. protected:
  24.     Long Nume, Denom;
  25. public:
  26.     void SetVal(Long , Long);
  27.     void Return ();
  28.     Fraction_t operator + (Fraction_t);
  29.     Fraction_t operator - (Fraction_t);
  30.     Fraction_t operator * (Fraction_t);
  31.     Fraction_t operator / (Fraction_t);
  32.     Fraction_t Simplify (Fraction_t&);
  33.  
  34. }
  35. *Fract1,
  36. *Fract2,
  37. *Fraction,
  38. Frac1,
  39. Frac2,
  40. Fract;
  41.  
  42. void Fraction_t::SetVal(Long a, Long b)
  43. {
  44.     Nume = a;
  45.     Denom = b;
  46. }
  47.  
  48. void Fraction_t::Return()
  49. {
  50.     if (Nume != 0 && Denom != 1)
  51.         cout << Nume << "/" << Denom;
  52.     else if (Nume == 0)
  53.         cout <<"0";
  54.     else if (Denom == 1)
  55.         cout << Nume;
  56. }
  57.  
  58. Fraction_t Fraction_t::operator+ (Fraction_t)
  59. {
  60.     Fract.Nume = (Frac1.Nume*Frac2.Denom) + (Frac2.Nume*Frac1.Denom);
  61.     Fract.Denom = (Frac1.Denom*Frac2.Denom);
  62.     return Fract;
  63. }
  64.  
  65. Fraction_t Fraction_t::operator- (Fraction_t)
  66. {
  67.     Fract.Nume = (Frac1.Nume*Frac2.Denom) - (Frac2.Nume*Frac1.Denom);
  68.     Fract.Denom = (Frac1.Denom*Frac2.Denom);
  69.     return Fract;
  70. }
  71.  
  72. Fraction_t Fraction_t::operator* (Fraction_t)
  73. {
  74.     Fract.Nume = Frac1.Nume*Frac2.Nume;
  75.     Fract.Denom = Frac1.Denom*Frac2.Denom;
  76.     return Fract;
  77. }
  78.  
  79. Fraction_t Fraction_t::operator/ (Fraction_t)
  80. {
  81.     Fract.Nume = Frac1.Nume*Frac2.Denom;
  82.     Fract.Denom = Frac1.Denom*Frac2.Nume;
  83.     return Fract;
  84. }
  85.  
  86. Fraction_t Fraction_t::Simplify (Fraction_t& A)
  87. {
  88.     Long hcf = HCF(A.Nume, A.Denom);
  89.     A.Nume = A.Nume/hcf;
  90.     A.Denom = A.Denom /hcf;
  91.     return A;
  92. }
  93.  
  94. int main ()
  95. {
  96.     Long a,b,c,d;
  97.     char Act;
  98.     bool Loop = true;
  99.  
  100.     cout << "Please enter Numerator of First Fraction: ";
  101.     cin >> a;
  102.     cout << "Please enter Denominator of First Fraction: ";
  103.     cin >> b;
  104.     cout << "Please enter Numerator of Second Fraction: ";
  105.     cin >> c;
  106.     cout << "Please enter Denominator of Second Fraction: ";
  107.     cin >> d;
  108.     cin.sync();
  109.  
  110.     Fract1 = &Frac1;
  111.     Fract2 = &Frac2;
  112.  
  113.     Fract1 -> SetVal(a,b);
  114.     Fract2 ->SetVal (c,d);
  115.    
  116.     char Opt;
  117.  
  118.     cout << "\n\nWhat do you want to do with the Fraction:\n[Add -> A, Subtract -> S, Multiply -> M, Divide -> D]:  \n";
  119.     cin >> Act;
  120.         if (Act == 'A'  || Act == 'a'  )
  121.         {
  122.             Fract = Frac1 + Frac2;
  123.             Opt = '+';
  124.         }
  125.  
  126.         else if (Act == 'S' || Act == 's'  )
  127.         {
  128.             Fract = Frac1 - Frac2;
  129.             Opt = '-';
  130.         }
  131.        
  132.         else if (Act == 'M'  || Act == 'm'  )
  133.         {
  134.             Fract = Frac1*Frac2;
  135.             Opt = '*';
  136.            
  137.         }
  138.  
  139.         else if (Act == 'D'  || Act == 'd'  )
  140.         {
  141.             Fract = Frac1/Frac2;
  142.             Opt = '/';
  143.            
  144.         }
  145.  
  146.         else
  147.             cout << "\nPlease Enter a valid option.\n";
  148.        
  149.     Fraction = &Fract;
  150.  
  151.     Fract1 -> Simplify(Frac1);
  152.     Fract2 -> Simplify(Frac2);
  153.     Fraction -> Simplify(Fract);
  154.  
  155.     cout << " [ ";
  156.     Fract1 -> Return();
  157.     cout << " ] ";
  158.     cout << Opt;
  159.     cout << " [ ";
  160.     Fract2 -> Return();
  161.     cout << " ]  =  ";
  162.     Fraction -> Return();
  163.  
  164.     cout << "\n________________________________________________________________________________";
  165.     ;cout << "\n\nPress ENTER to continue . . . ";
  166.     cin.sync();
  167.     cin.get();
  168.     return 0;
  169. }
Advertisement
Add Comment
Please, Sign In to add comment