Rational.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef _RATIONAL_
  2. #define _RATIONAL_
  3. #include <iostream>
  4. using namespace std;
  5. class Rational {
  6. public:
  7. long long int num;
  8. long long int denum;
  9. Rational();
  10. Rational(int num1);
  11. Rational(float x);
  12. Rational(double x);
  13. Rational(int num1, int num2);
  14. Rational& operator *=(const Rational& r);
  15. Rational operator *(const Rational& r) const;
  16. Rational& operator += (const Rational& r);
  17. Rational operator + (const Rational& r) const;
  18. Rational& operator -= (const Rational& r);
  19. Rational operator - (const Rational& r) const;
  20. Rational operator / (const Rational& r) const;
  21. Rational& operator /= (const Rational& r);
  22. Rational& operator *=(const int r);
  23. Rational operator *(const int r) const;
  24. Rational& operator += (const int r);
  25. Rational operator + (const int r) const;
  26. Rational& operator -= (const int r);
  27. Rational operator - (const int r) const;
  28. Rational operator / (const int r) const;
  29. Rational& operator /= (const int r);
  30. Rational& operator *=(const double r);
  31. Rational operator *(const double r) const;
  32. Rational& operator += (const double r);
  33. Rational operator + (const double r) const;
  34. Rational& operator -= (const double r);
  35. Rational operator - (const double r) const;
  36. Rational operator / (const double r) const;
  37. Rational& operator /= (const double r);
  38. Rational operator -() const;
  39. operator int () const;
  40. operator double() const;
  41. friend ostream& operator <<(ostream& out, const Rational& r);
  42. Rational sqrt();
  43. private:
  44. // упрощение самого себя
  45. void simple();
  46. // НОК
  47. long long int lcm(long long int num1, long long int num2);
  48. // НОД
  49. long long int gcd(long long int num1, long long int num2);
  50. };
  51. #endif