Browse Source

init with bugs

jezv 1 year ago
commit
b49bbf9c99
2 changed files with 80 additions and 0 deletions
  1. 22 0
      Fraction.h
  2. 58 0
      Fractional.cpp

+ 22 - 0
Fraction.h

@@ -0,0 +1,22 @@
+#include "../Chain/Chain.h"
+#include "Rational.h"
+#include <iostream>
+
+class Fraction
+{
+    public:
+    Chain<int> layers;
+
+    Fraction(Rational r);
+    Fraction(double r);
+
+    operator Rational();
+
+    void show();
+
+    friend std::ostream& operator <<(std::ostream& out, Fraction& f);
+
+    protected:
+    void Fractain(long long num, long long denum);
+
+};

+ 58 - 0
Fractional.cpp

@@ -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;
+}