Fractional.cpp 1002 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. int layer, spec;
  9. while(num > 1 or denum > 1)
  10. {
  11. layer = num / denum;
  12. spec = denum;
  13. denum = num - (layer*denum);
  14. num = spec;
  15. layers.add(layer);
  16. }
  17. }
  18. Fraction::Fraction(Rational r)
  19. {
  20. Fraction(r.num, r.denum);
  21. }
  22. Fraction::Fraction(double d)
  23. {
  24. }
  25. Fraction::operator Rational()
  26. {
  27. long long num = 1;
  28. long long denum = layers.pop();
  29. int spec;
  30. cout << '(' << num << '/' << denum << ')' << endl;
  31. while(layers.lenght > 0)
  32. {
  33. spec = denum;
  34. denum = num + denum * layers.pop();
  35. num = spec;
  36. cout << '(' << num << '/' << denum << ')' << endl;
  37. }
  38. return Rational(denum, num);
  39. }
  40. ostream& operator <<(ostream& out, Fraction& f)
  41. {
  42. out << f.layers;
  43. return out;
  44. }
  45. void Fraction::show()
  46. {
  47. cout << layers << endl;
  48. }