fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. class Rational
  6. {
  7. public:
  8. Rational(int = 0, int = 1); // default constructor
  9. Rational addition(const Rational&);
  10. Rational subtraction(const Rational&);
  11. Rational multiplication(const Rational&);
  12. Rational division(const Rational&);
  13. void printRational();
  14. void printRationalAsdouble();
  15.  
  16. private:
  17. int numerator;
  18. int denominator;
  19. void reduction(); // function to reduce using great common divisor
  20.  
  21. };
  22.  
  23.  
  24. Rational::Rational(int n, int d)
  25. {
  26. numerator = n;
  27. denominator = d;
  28. reduction();
  29. }
  30.  
  31.  
  32. Rational Rational::addition(const Rational& a)
  33. {
  34. Rational t;
  35.  
  36. t.numerator = a.numerator * denominator;
  37. t.numerator += a.denominator * numerator;
  38. t.denominator = a.denominator * denominator;
  39. t.reduction();
  40. return t;
  41.  
  42. }
  43.  
  44. Rational Rational::subtraction(const Rational& s)
  45. {
  46. Rational t;
  47. t.numerator = s.numerator * denominator;
  48. t.numerator -= denominator * s.numerator;
  49. t.denominator = s.denominator * denominator;
  50. return t;
  51.  
  52. }
  53.  
  54. Rational Rational::multiplication(const Rational& m)
  55. {
  56. Rational t;
  57. t.numerator = m.numerator * numerator;
  58. t.denominator = m.denominator * denominator;
  59. t.reduction();
  60. return t;
  61. }
  62.  
  63. Rational Rational::division(const Rational& v)
  64. {
  65. Rational t;
  66. t.numerator = numerator * v.denominator;
  67. t.denominator = denominator * v.numerator;
  68. t.reduction();
  69. return t;
  70.  
  71. }
  72.  
  73.  
  74. void Rational::printRational()
  75. {
  76. if (denominator == 0)
  77. cout << "\nDIVIDE BY ZERO ERROR!!!" << "\n";
  78. else if (numerator == 0)
  79. cout << 0;
  80. else
  81. cout << numerator << '/' << denominator;
  82. }
  83.  
  84.  
  85. void Rational::printRationalAsdouble()
  86. {
  87. cout << static_cast<double>(numerator) / denominator;
  88. }
  89.  
  90. void Rational::reduction()
  91. {
  92. int largest;
  93.  
  94. largest = numerator > denominator ? numerator : denominator;
  95.  
  96.  
  97. for (int loop = 2; loop <= largest; loop++)
  98. {
  99. for (int loop = 2; loop <= largest; loop++)
  100. {
  101. if (numerator % loop == 0 && denominator % loop == 0)
  102. {
  103. numerator /= loop;
  104. denominator /= loop;
  105. }
  106. }
  107.  
  108. }
  109.  
  110. }
  111.  
  112.  
  113. int main()
  114. {
  115. Rational obj1(8, 14), obj2(5, 7), resobj;
  116.  
  117. obj1.printRational();
  118. cout << " + ";
  119. obj2.printRational();
  120. resobj = obj1.addition(obj2);
  121.  
  122. cout << " = ";
  123. resobj.printRational();
  124.  
  125.  
  126.  
  127. }
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
4/7 + 5/7 = 9/7