using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Übungen_LF6_WinFormanwendung { class Bruchzahl : IComparable { public int nenner { get { return this.nenner; } set { if (value == 0) throw new DivideByZeroException(); else this.nenner = value; } } public int zaehler { get; set; } public Bruchzahl() { nenner = 1; zaehler = 1; } public Bruchzahl(int z, int n) { nenner = n; zaehler = z; } public double dezWert() { double z = zaehler; double n = nenner; return z / n; } /* public void add(Bruchzahl b) { } */ public void gibZaehlerNenner(out int z, out int n) { z = zaehler; n = nenner; } public override string ToString() { return zaehler +" / " + nenner; } public Bruchzahl kuerzen() { int ggtNenner = ggT(zaehler, nenner); Bruchzahl ergebnis = new Bruchzahl(); ergebnis.zaehler /= ggtNenner; ergebnis.nenner /= ggtNenner; return ergebnis; } public int ggT(int z, int n) { if (z == 0 || n == 0) throw new DivideByZeroException(); int rest = 0; while (n > 0) { rest = z % n; z = n; n = rest; } return z; } public int CompareTo(object obj) { Bruchzahl objBruch = (Bruchzahl)obj; if (objBruch == null) return 1; double objDouble = objBruch.dezWert(); double thisDouble = this.dezWert(); return thisDouble.CompareTo(objDouble); } public static Bruchzahl operator +(Bruchzahl bruch1, Bruchzahl bruch2) { Bruchzahl ergebnis = new Bruchzahl(); ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler + bruch2.zaehler * bruch1.nenner; ergebnis.nenner = bruch1.nenner * bruch2.nenner; return ergebnis; } public static Bruchzahl operator -(Bruchzahl bruch1, Bruchzahl bruch2) { Bruchzahl ergebnis = new Bruchzahl(); ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler - bruch2.zaehler * bruch1.nenner; ergebnis.nenner = bruch1.nenner * bruch2.nenner; return ergebnis; } public static Bruchzahl operator *(Bruchzahl bruch1, Bruchzahl bruch2) { Bruchzahl ergebnis = new Bruchzahl(); ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler ; ergebnis.nenner = bruch1.nenner * bruch2.nenner; return ergebnis; } public static Bruchzahl operator /(Bruchzahl bruch1, Bruchzahl bruch2) { if (bruch2.zaehler == 0) throw new DivideByZeroException(); Bruchzahl ergebnis = new Bruchzahl(); ergebnis.zaehler = bruch1.zaehler * bruch2.nenner ; ergebnis.nenner = bruch1.nenner * bruch2.zaehler; return ergebnis; } } }