/** * Rationale Zahl */ public class RationaleZahl { /** * Leerer Konstruktor, legt die Zahl 0/0 an */ public RationaleZahl() { // Implementieren sie diese Methode nenner = 0; zaehler = 0; } /** * Konstruktor, legt die Zahl i/1 an */ public RationaleZahl(int i) { // Implementieren sie diese Methode zaehler = i; nenner = 1; } /** * Konstruktor, legt die Zahl z/n an */ public RationaleZahl(int z, int n) { // Implementieren sie diese Methode zaehler=z; nenner=n; } /** * Kopier-Konstruktor, kopiert die Werte other.zaehler und other.nenner. */ public RationaleZahl(RationaleZahl other) { // Implementieren sie diese Methode other = new RationaleZahl(zaehler, nenner); } /** * Addiert 'other' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden! */ public void add(RationaleZahl other) { // Implementieren sie diese Methode int SumZaehler = zaehler*other.nenner+other.zaehler*nenner; int SumNenner = nenner*other.nenner; RationaleZahl sum = new RationaleZahl(SumZaehler, SumNenner); sum.kuerzen(); } /** * Addiert die Konstante 'zahl' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. */ public void add(int zahl) { // Implementieren sie diese Methode int SumZaehler=zaehler+zahl*nenner; int SumNenner= nenner; RationaleZahl sum = new RationaleZahl(SumZaehler, SumNenner); } /** * Subtrahiert 'other' von der aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden! */ public void sub(RationaleZahl other) { // Implementieren sie diese Methode int SubZaehler = zaehler*other.nenner-other.zaehler*nenner; int SubNenner = nenner*other.nenner; RationaleZahl sub = new RationaleZahl(SubZaehler, SubNenner); sub.kuerzen(); } /** * Subtrahiert die Konstante 'zahl' von der aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. */ public void sub(int zahl) { // Implementieren sie diese Methode int SubZaehler=zaehler-zahl*nenner; int SubNenner= nenner; RationaleZahl sub = new RationaleZahl(SubZaehler, SubNenner); } /** * Multipliziert die Rationale Zahl 'other' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden! */ public void mul(RationaleZahl other) { // Implementieren sie diese Methode int ProdZaehler = zaehler*other.zaehler; int ProdNenner = nenner*other.nenner; RationaleZahl prod = new RationaleZahl(ProdZaehler, ProdNenner); prod.kuerzen(); } /** * Multipliziert aktuelle Zahl mit der Konstante 'zahl' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. */ public void mul(int zahl) { // Implementieren sie diese Methode int ProdZaehler = zaehler*zahl; int ProdNenner = nenner; RationaleZahl prod = new RationaleZahl(ProdZaehler, ProdNenner); prod.kuerzen(); } /** * Dividiert die aktuelle Zahl durch die Rationalen Zahl 'other' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden! */ public void div(RationaleZahl other) { // Implementieren sie diese Methode int QuotZaehler = zaehler*other.nenner; int QuotNenner = nenner*other.zaehler; RationaleZahl Quot = new RationaleZahl(QuotZaehler, QuotNenner); Quot.kuerzen(); } /** * Dividiert die aktuelle Zahl durch die Konstante 'zahl' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. */ public void div(int zahl) { // Implementieren sie diese Methode int QuotZaehler = zaehler; int QuotNenner = nenner*zahl; RationaleZahl Quot = new RationaleZahl(QuotZaehler, QuotNenner); Quot.kuerzen(); } /** * Gibt die Zahl aus */ public void printRat() { System.out.println("(" + zaehler + "/" + nenner + ")"); } /** * Konvertiert die Zahl in ein double */ public double nachDouble() { return (double)zaehler/(double)nenner; } /** * Berechnet den groessten gemeinsamen Teiler der Zahlen 'zahl1' und 'zahl2' */ public static int ggT(int zahl1, int zahl2) { // Implementieren sie diese Methode if(zahl1==zahl2) return zahl1; else if(zahl1