1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #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)
- {
- if (num == 0 or denum == 0) {
- cout << num + denum << endl;
- layers.add(num + denum);
- break;
- }
- layer = num / denum;
- spec = denum;
- denum = num - (layer*denum);
- num = spec;
- cout << layer;
- layers.add(layer);
- cout << " added\n";
- cout << num << ' ' << denum << endl;
- }
- cout << "init success" << endl;
- }
- 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);
- }
- Fraction::operator double()
- {
- return double(Rational(*this));
- }
- Fraction::operator int()
- {
- return int(double(*this));
- }
- ostream& operator <<(ostream& out, Fraction& f)
- {
- cout << "<< oper" << endl;
- out << f.layers;
- return out;
- }
- void Fraction::show()
- {
- cout << layers << endl;
- }
|