Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. // ConsoleApplication1.cpp: Definiuje punkt wejścia dla aplikacji konsolowej.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. int gcd(int a, int b);
  8.  
  9. class RN
  10. {
  11. public:
  12. int numerator;
  13. int denominator;
  14. RN operator+=(const RN& rhs)
  15. {
  16. this->numerator = this->numerator * rhs.denominator + rhs.numerator * this->denominator;
  17. this->denominator = this->denominator * rhs.denominator;
  18. this->simplify();
  19. return *this;
  20. }
  21. RN operator=(RN rhs)
  22. {
  23. this->numerator = rhs.numerator;
  24. this->denominator = rhs.denominator;
  25. return *this;
  26. }
  27. RN() {};
  28. RN(int n, int d)
  29. {
  30. this->numerator = n;
  31. this->denominator = d;
  32. this->simplify();
  33. }
  34. void simplify();
  35. };
  36.  
  37. void RN::simplify()
  38. {
  39. int a = gcd(numerator, denominator);
  40. numerator /= a;
  41. denominator /= a;
  42. }
  43.  
  44. int gcd(int a, int b)
  45. {
  46. return b == 0 ? a : gcd(b, a%b);
  47. }
  48.  
  49. std::ostream& operator<<(std::ostream& os, const RN& obj)
  50. {
  51. std::cout << obj.numerator << "/" << obj.denominator;
  52. return os;
  53. }
  54.  
  55. inline RN operator+(RN lhs, const RN& rhs)
  56. {
  57. lhs.numerator = lhs.numerator * rhs.denominator + rhs.numerator * lhs.denominator;
  58. lhs.denominator = lhs.denominator * rhs.denominator;
  59. lhs.simplify();
  60. return lhs;
  61. }
  62.  
  63. inline RN operator*(RN lhs, const RN& rhs)
  64. {
  65. lhs.numerator = lhs.numerator * rhs.numerator;
  66. lhs.denominator = lhs.denominator * rhs.denominator;
  67. lhs.simplify();
  68.  
  69. return lhs;
  70. }
  71.  
  72. inline bool operator==(const RN& lhs, const RN& rhs)
  73. {
  74. if (lhs.numerator == rhs.numerator && lhs.denominator == rhs.denominator)
  75. return true;
  76. return false;
  77. }
  78.  
  79. int main()
  80. {
  81. RN a = RN(3, 9);
  82. RN b = RN(1, 3);
  83. std::cout << a << " " << b << " " << " " << a + b << " " << a * b << std::endl;
  84. a += b;
  85. std::cout << a << std::endl;
  86. a = b;
  87. if (a == b) std::cout << "Dziala" << std::endl;
  88.  
  89. return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement