123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #include "Fraction.h"
- #include "../Rational.h"
- #include <iostream>
- #include <cmath>
- using namespace std;
- Fraction::Fraction(long long int num, long long int denum)
- {
- int layer, spec;
- while(num > 1 or denum > 1)
- {
- layer = num / denum;
- spec = denum;
- denum = num - (layer*denum);
- num = spec;
- layers.add(layer);
- }
- }
- Fraction::Fraction(Rational r)
- {
- Fraction(r.num, r.denum);
- }
- Fraction::Fraction(double d)
- {
-
- }
- Fraction::operator Rational()
- {
- long long num = 1;
- long long denum = layers.pop();
- int spec;
- cout << '(' << num << '/' << denum << ')' << endl;
- while(layers.lenght > 0)
- {
- spec = denum;
- denum = num + denum * layers.pop();
- num = spec;
- cout << '(' << num << '/' << denum << ')' << endl;
- }
- return Rational(denum, num);
- }
- ostream& operator <<(ostream& out, Fraction& f)
- {
- out << f.layers;
- return out;
- }
- void Fraction::show()
- {
- cout << layers << endl;
- }
|