| 
					
				 | 
			
			
				@@ -0,0 +1,58 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "Fraction.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "Rational.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <iostream> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <cmath> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using namespace std; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Fraction::Fraction(Rational r) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Fractain(r.num, r.denum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Fraction::Fraction(double d) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Fraction::Fractain(long long num, long long 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::operator Rational() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    long long num = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    long long denum = layers.pop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    int spec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cout << '(' << num << '/' << denum << ')' << endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while(!layers.isNull()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |