Fractional.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "Fraction.h"
  2. #include "../Rational.h"
  3. #include <iostream>
  4. #include <cmath>
  5. using namespace std;
  6. Fraction::Fraction(long long int num, long long int denum)
  7. {
  8. cout << num << "suka Fraction zaebal" << denum << endl;
  9. long long int layer, spec;
  10. while(abs(num) > 1 or abs(denum) > 1)
  11. {
  12. if (num == 0 or denum == 0) break;
  13. layer = num / denum;
  14. spec = denum;
  15. denum = num - (layer*denum);
  16. num = spec;
  17. cout << layer << endl;
  18. layers.add(layer);
  19. cout << layers << endl;
  20. }
  21. cout << "new bleat vse ok" << endl;
  22. }
  23. Fraction::Fraction(Rational r)
  24. {
  25. Fraction(r.num, r.denum);
  26. }
  27. Fraction::Fraction(double x)
  28. {
  29. Fraction(Rational(x));
  30. }
  31. Fraction::operator Rational()
  32. {
  33. cout << "Fractional problem" << endl;
  34. long long num = 1;
  35. long long denum = layers.pop();
  36. long long int spec;
  37. cout << '(' << num << '/' << denum << ')' << endl;
  38. while(layers.lenght > 0)
  39. {
  40. spec = denum;
  41. denum = num + denum * layers.pop();
  42. num = spec;
  43. cout << '(' << num << '/' << denum << ')' << endl;
  44. }
  45. cout << "No Fractional problem" << endl;
  46. return Rational(denum, num);
  47. }
  48. Fraction::operator double()
  49. {
  50. return double(Rational(*this));
  51. }
  52. Fraction::operator int()
  53. {
  54. return int(double(*this));
  55. }
  56. ostream& operator <<(ostream& out, Fraction& f)
  57. {
  58. cout << "<< oper" << endl;
  59. out << f.layers;
  60. return out;
  61. }
  62. void Fraction::show()
  63. {
  64. cout << layers << endl;
  65. }