Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. //Main.cpp
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include<iomanip>
  6. #include "Rational.h"
  7.  
  8. using namespace std;
  9.  
  10. // Constructor
  11.  
  12. Rational::Rational(int n, int d) {
  13. numerator = n;
  14. denominator = d;
  15. reduction();
  16. }
  17.  
  18. //Addition
  19. Rational Rational::operator+ (const Rational &a) {
  20. Rational sum;
  21. sum.numerator = numerator * a.denominator + denominator * a.numerator;
  22. sum.denominator = denominator * a.denominator;
  23. sum.reduction();
  24.  
  25. return sum;
  26. }
  27.  
  28. //Subtraction
  29. Rational Rational::operator- (const Rational &s) {
  30. Rational sub;
  31. sub.numerator = numerator * s.denominator - denominator * s.numerator;
  32. sub.denominator = denominator * s.denominator;
  33. sub.reduction();
  34.  
  35. return sub;
  36. }
  37.  
  38. //Multiplication
  39. Rational Rational::operator* (const Rational &m) {
  40. Rational mult;
  41. mult.numerator = numerator * m.numerator;
  42. mult.denominator = denominator * m.denominator;
  43. mult.reduction();
  44.  
  45. return mult;
  46. }
  47.  
  48. //Division
  49. Rational Rational::operator/ (const Rational &d) {
  50. Rational div;
  51.  
  52. if (d.numerator != 0) {
  53. div.numerator = denominator * d.denominator;
  54. div.denominator = denominator * d.numerator;
  55. div.reduction();
  56. }
  57. else {
  58. cout << "Error: Cannot divide by zero " << endl;
  59. }
  60. return div;
  61.  
  62. }//Greater than
  63. bool Rational::operator> (const Rational &g) {
  64. if (static_cast<double> (numerator) / denominator >
  65. static_cast<double>(g.numerator) / g.denominator)
  66.  
  67. return true;
  68.  
  69. else
  70.  
  71. return false;
  72. }
  73.  
  74. //Equal to
  75. bool Rational::operator== (const Rational &e) {
  76. if (numerator == e.numerator && denominator == e.denominator)
  77. return true;
  78.  
  79. else
  80. return false;
  81. }
  82.  
  83. //Not Equal to
  84. bool Rational::operator!= (const Rational &ne) {
  85. return !(*this == ne);
  86. }
  87.  
  88. //Less than
  89. bool Rational::operator< (const Rational &l) {
  90. if (static_cast<double> (numerator) / denominator >
  91. static_cast<double>(l.numerator) / l.denominator)
  92.  
  93. return true;
  94.  
  95. else
  96.  
  97. return false;
  98. }
  99. /*
  100. //Less or Equal to
  101. bool Rational::operator== (const Rational &ge) {
  102. return *this == ge || *this > ge;
  103. }*/
  104. //Print Rational
  105. /*void Rational::printRational(void) {
  106. if (numerator == 0)
  107. cout << numerator;
  108. else if (denominator == 1)
  109. cout << numerator;
  110. else
  111. cout << numerator << "/" << denominator << " (" << setprecision(2) << ") ";
  112. }*/
  113.  
  114. //Print Rational
  115. void Rational::printRational(void) {
  116. cout << numerator << "/" << denominator << " (" << setprecision(2)
  117. << numerator * 1.0 / denominator << ") " << endl;
  118. }
  119. //Print Rational as double
  120. void Rational::printRationalAsDouble(void) {
  121. if (static_cast<double> (numerator) / denominator);
  122. }
  123.  
  124. //Reduction
  125. void Rational::reduction(void) {
  126. int la, gcd = 1;
  127. la = (numerator > denominator) ? numerator : denominator;
  128.  
  129. for (int x = 2; x <= la; ++x)
  130. if (numerator % x == 0 && denominator % x == 0)
  131. gcd == x;
  132.  
  133. numerator /= gcd;
  134. denominator /= gcd;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement