Fractional.cpp 996 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "Fraction.h"
  2. #include "Rational.h"
  3. #include <iostream>
  4. #include <cmath>
  5. using namespace std;
  6. Fraction::Fraction(Rational r)
  7. {
  8. Fractain(r.num, r.denum);
  9. }
  10. Fraction::Fraction(double d)
  11. {
  12. }
  13. void Fraction::Fractain(long long num, long long denum)
  14. {
  15. int layer, spec;
  16. while(num > 1 or denum > 1)
  17. {
  18. layer = num / denum;
  19. spec = denum;
  20. denum = num - (layer*denum);
  21. num = spec;
  22. layers.add(layer);
  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.isNull())
  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. }