public class Bruch { // Attribute int zaehler; int nenner; // Hilfsmethoden public int abs(int zahl) { if (zahl >= 0) return zahl; return -1 * zahl; } public int ggt(int zahl1, int zahl2) { if (zahl1 >= zahl2) { if (zahl1 % zahl2 == 0) return zahl2; else return ggt(zahl2, zahl1-zahl2); } else return ggt(zahl2, zahl1); } public void kuerzen() { if (this.zaehler == 0) { this.nenner = 1; return; } int kuerz_faktor = ggt(abs(this.zaehler), abs(this.nenner)); this.zaehler /= kuerz_faktor; this.nenner /= kuerz_faktor; if (this.zaehler < 0) { this.zaehler = -this.zaehler; this.nenner = -this.nenner; } } // Methoden public Bruch() { this.zaehler = 1; this.nenner = 1; this.kuerzen(); } public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; if (nenner != 0) { this.nenner = nenner; } else { // Fehlerfall; wie man dies korrekt behandelt folgt spaeter this.nenner = 1; } this.kuerzen(); } public boolean EQ(Bruch bruch) { return this.zaehler == bruch.zaehler && this.nenner == bruch.nenner; } public boolean LE(Bruch bruch) { return this.toDouble() <= bruch.toDouble(); } public Bruch addiere(Bruch bruch2) { return new Bruch(this.zaehler*bruch2.nenner + bruch2.zaehler*this.nenner, this.nenner*bruch2.nenner); } public Bruch multipliziere(Bruch bruch2) { return new Bruch(this.zaehler*bruch2.zaehler, this.nenner*bruch2.nenner); } public void add(Bruch bruch) { this.zaehler = this.zaehler*bruch.nenner + bruch.zaehler*this.nenner; this.nenner = this.nenner*bruch.nenner; this.kuerzen(); } public void mult(Bruch bruch) { this.zaehler = this.zaehler*bruch.zaehler; this.nenner = this.nenner*bruch.nenner; this.kuerzen(); } public double toDouble() { return (double)this.zaehler / (double)this.nenner; } public String toString() { return this.zaehler + "/" + this.nenner; } }