static void Main(string[] args) { Helpers.zeigeTitel("Bruchrechnung - Überladene Operatoren", "Version 5"); // Ausgangsbrüche in b1 und b2 kopieren, b3 deklarieren, Zahl deklarieren Bruch b1 = new Bruch(15, 21); Bruch b2 = new Bruch(7, 8); Bruch b3; const int ZAHL = 3; // Ausgabe der Brüche Console.Write("b1 = "); b1.print(); Console.Write("b2 = "); b2.print(); Console.WriteLine(); Console.WriteLine("Test des diadischen Operators -\n"); // Subtraktion eines Bruchs von einem anderen Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.subtract(b1, b2); Console.Write("b3 = Bruch.subtract(b1, b2) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Subtraktion eines Bruchs von einem anderen Bruch mittels überladenem Operator und Ausgabe des Ergebnisses b3 = b1 - b2; Console.Write("b3 = b1 - b2 = "); b3.print(); b3.dprint(); Console.WriteLine(); // Ausgabe der Bruchs und der Zahl Console.Write("b1 = "); b1.print(); Console.WriteLine("ZAHL = " + ZAHL); Console.WriteLine(); // Subtraktion einer Zahl von einem Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.subtract(b1, ZAHL); Console.Write("b3 = Bruch.subtract(b1, ZAHL) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Subtraktion einer Zahl von einem Bruch mittels Operator und Ausgabe des Ergebnisses b3 = b1 - ZAHL; Console.Write("b3 = b1 - ZAHL = "); b3.print(); b3.dprint(); Console.WriteLine(); // Subtraktion eines Bruchs von einer Zahl mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.subtract(ZAHL, b1); Console.Write("b3 = Bruch.subtract(ZAHL, b1) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Subtraktion eines Bruchs von einer Zahl mittels Operator und Ausgabe des Ergebnisses b3 = ZAHL - b1; Console.Write("b3 = ZAHL - b1 = "); b3.print(); b3.dprint(); Console.WriteLine(); Console.WriteLine("Test des diadischen Operators *\n"); // Multiplikation eines Bruchs mit einem anderen Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.multiply(b1, b2); Console.Write("b3 = Bruch.multiply(b1, b2) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Multiplikation eines Bruchs mit einem anderen Bruch mittels überladenem Operator und Ausgabe des Ergebnisses b3 = b1 * b2; Console.Write("b3 = b1 * b2 = "); b3.print(); b3.dprint(); Console.WriteLine(); // Ausgabe der Bruchs und der Zahl Console.Write("b1 = "); b1.print(); Console.WriteLine("ZAHL = " + ZAHL); Console.WriteLine(); // Multiplikation einer Zahl mit einem Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.multiply(b1, ZAHL); Console.Write("b3 = Bruch.multiply(b1, ZAHL) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Multiplikation einer Zahl mit einem Bruch mittels Operator und Ausgabe des Ergebnisses b3 = b1 * ZAHL; Console.Write("b3 = b1 * ZAHL = "); b3.print(); b3.dprint(); Console.WriteLine(); // Multiplikation eines Bruchs mit einer Zahl mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.multiply(ZAHL, b1); Console.Write("b3 = Bruch.multiply(ZAHL, b1) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Multiplikation eines Bruchs mit einer Zahl mittels Operator und Ausgabe des Ergebnisses b3 = ZAHL * b1; Console.Write("b3 = ZAHL * b1 = "); b3.print(); b3.dprint(); Console.WriteLine(); Console.WriteLine("Test des diadischen Operators /\n"); // Division eines Bruchs von einem anderen Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.divide(b1, b2); Console.Write("b3 = Bruch.divide(b1, b2) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Division eines Bruchs von einem anderen Bruch mittels überladenem Operator und Ausgabe des Ergebnisses b3 = b1 / b2; Console.Write("b3 = b1 / b2 = "); b3.print(); b3.dprint(); Console.WriteLine(); // Ausgabe der Bruchs und der Zahl Console.Write("b1 = "); b1.print(); Console.WriteLine("ZAHL = " + ZAHL); Console.WriteLine(); // Division einer Zahl von einem Bruch mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.divide(b1, ZAHL); Console.Write("b3 = Bruch.divide(b1, ZAHL) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Division einer Zahl von einem Bruch mittels Operator und Ausgabe des Ergebnisses b3 = b1 / ZAHL; Console.Write("b3 = b1 / ZAHL = "); b3.print(); b3.dprint(); Console.WriteLine(); // Division eines Bruchs von einer Zahl mittels Klassenmethode und Ausgabe des Ergebnisses b3 = Bruch.divide(ZAHL, b1); Console.Write("b3 = Bruch.divide(ZAHL, b1) = "); b3.print(); b3.dprint(); Console.WriteLine(); // Division eines Bruchs von einer Zahl mittels Operator und Ausgabe des Ergebnisses b3 = ZAHL / b1; Console.Write("b3 = ZAHL / b1 = "); b3.print(); b3.dprint(); Console.WriteLine(); // Komplexe Ausdrücke mit Brüchen, Ausgabe erfolgt jeweils mit // Konversionsoperator string // Bei der Ausgabe der gekürzten Brüche muss die Klassenmethode // reduce verwendet werden, da z.B. in (b4 + b1).reduce() // (b4 + b1) keine Instanz ist. Die Klassenmethode dagegen // nimmt den Wert des Ausdrucks und liefert ihn gekürzt // (eben via return) zurück. Console.WriteLine("Test des mehrgliedriger Ausdrücke\n"); Bruch b4 = b1 + b2 + b3; b4.reduce(); Console.WriteLine("Bruch b4 = " + b1 + " + " + b2 + " + " + b3 + " = " + b4); Console.WriteLine(b4 + " += " + b1 + " = " + Bruch.reduce((b4 += b1))); b4.reduce(); Console.WriteLine(b4 + " -= " + b1 + " = " + Bruch.reduce((b4 -= b1))); Console.WriteLine(b1 + " * " + b2 + " + " + b3 + " = " + (b1 * b2 + b3)); Console.WriteLine(b1 + " * (" + b2 + " + " + b3 + ") = " + (b1 * (b2 + b3))); Console.WriteLine(b1 + " * " + b2 + " / " + b3 + " = " + (b1 * b2 / b3)); Console.WriteLine(b1 + " * (" + b2 + " / " + b3 + ") = " + (b1 * (b2 / b3))); Console.WriteLine(b1 + " / (" + b2 + " - " + b3 + ") = " + (b1 / (b2 - b3))); Console.WriteLine(b1 + " / " + b2 + " - " + b3 + " = " + (b1 / b2 - b3)); // Test Gleichheit/Ungleichheit Bruch b5 = new Bruch(1, 2); Bruch b6 = new Bruch(7, 14); Console.WriteLine(b5 == b6); Console.WriteLine(b5 * b6 == b6 * b5); Console.WriteLine(b5 != b6); Helpers.zeigeProgrammende(); }
static void Main(string[] args) { Helpers.zeigeTitel("Bruchrechnung", "Version 2"); // Konstante des Beispiels für zwei Brüche deklarieren // Wenn andere Zahlen getestet werden sollen, bitte hier ändern: const int ZAEHLERB1 = 3, NENNERB1 = 8; const int ZAEHLERB2 = 1, NENNERB2 = 7; #region Bruchaddition testen // Zwei Bruchinstanzen unter Verwendung obiger Konstanten erzeugen Bruch b1 = new Bruch(ZAEHLERB1, NENNERB1); Bruch b2 = new Bruch(ZAEHLERB2, NENNERB2); // Bruchinstanzen ausgeben Console.Write("Bruch b1 = new Bruch(" + ZAEHLERB1 + ", " + NENNERB1 + "): "); b1.print(); Console.Write("Bruch b2 = new Bruch(" + ZAEHLERB2 + ", " + NENNERB2 + "): "); b2.print(); Console.WriteLine("\nTest der Bruchaddition (Klassenmethoden)..."); Bruch b3 = Bruch.add(b1, b2); Console.Write("Bruch b3 = Bruch.add(b1, b2) = "); b3.print(); b3 = Bruch.add(b1, 5); Console.Write(" b3 = Bruch.add(b1, 5) = "); b3.print(); b3 = Bruch.add(5, b2); Console.Write(" b3 = Bruch.add( 5, b2) = "); b3.print(); Console.WriteLine("\nTest der Bruchaddition (Instanzmethoden)..."); b1.add(b2); Console.Write("b1.add(b2) = "); b1.print(); b1.add(5); Console.Write("b1.add( 5) = "); b1.print(); #endregion #region Bruchmultiplikation testen // Bruchinstanzen b1 und b2 mit Ursprungswerten erzeugen b1 = new Bruch(ZAEHLERB1, NENNERB1); b2 = new Bruch(ZAEHLERB2, NENNERB2); // Bruchinstanzen ausgeben Console.Write("\n b1 = new Bruch(" + ZAEHLERB1 + ", " + NENNERB1 + "): "); b1.print(); Console.Write(" b2 = new Bruch(" + ZAEHLERB2 + ", " + NENNERB2 + "): "); b2.print(); Console.WriteLine("\nTest der Bruchmultiplikation (Klassenmethoden)..."); b3 = Bruch.multiply(b1, b2); Console.Write(" b3 = Bruch.multiply(b1, b2) = "); b3.print(); b3 = Bruch.multiply(b1, 5); Console.Write(" b3 = Bruch.multiply(b1, 5) = "); b3.print(); b3 = Bruch.multiply(5, b2); Console.Write(" b3 = Bruch.multiply( 5, b2) = "); b3.print(); Console.WriteLine("\nTest der Bruchmultiplikation (Instanzmethoden)..."); b1.multiply(b2); Console.Write("b1.multiply(b2) = "); b1.print(); b1.multiply(5); Console.Write("b1.multiply( 5) = "); b1.print(); #endregion #region Bruchsubtraktion testen // Bruchinstanzen b1 und b2 mit Ursprungswerten erzeugen b1 = new Bruch(ZAEHLERB1, NENNERB1); b2 = new Bruch(ZAEHLERB2, NENNERB2); // Bruchinstanzen ausgeben Console.Write("\n b1 = new Bruch(" + ZAEHLERB1 + ", " + NENNERB1 + "): "); b1.print(); Console.Write(" b2 = new Bruch(" + ZAEHLERB2 + ", " + NENNERB2 + "): "); b2.print(); Console.WriteLine("\nTest der Bruchsubtraktion (Klassenmethoden)..."); b3 = Bruch.subtract(b1, b2); Console.Write(" b3 = Bruch.subtract(b1, b2) = "); b3.print(); b3 = Bruch.subtract(b1, 5); Console.Write(" b3 = Bruch.subtract(b1, 5) = "); b3.print(); b3 = Bruch.subtract(5, b1); Console.Write(" b3 = Bruch.subtract( 5, b1) = "); b3.print(); Console.WriteLine("\nTest der Bruchsubtraktion (Instanzmethoden)..."); b1.subtract(b2); Console.Write("b1.subtract(b2) = "); b1.print(); b1.subtract(5); Console.Write("b1.subtract( 5) = "); b1.print(); #endregion #region Bruchdivision testen // Bruchinstanzen b1 und b2 mit Ursprungswerten erzeugen b1 = new Bruch(ZAEHLERB1, NENNERB1); b2 = new Bruch(ZAEHLERB2, NENNERB2); // Bruchinstanzen ausgeben Console.Write("\n b1 = new Bruch(" + ZAEHLERB1 + ", " + NENNERB1 + "): "); b1.print(); Console.Write(" b2 = new Bruch(" + ZAEHLERB2 + ", " + NENNERB2 + "): "); b2.print(); Console.WriteLine("\nTest der Bruchdivision (Klassenmethoden)..."); b3 = Bruch.divide(b1, b2); Console.Write(" b3 = Bruch.divide(b1, b2) = "); b3.print(); b3 = Bruch.divide(b1, 5); Console.Write(" b3 = Bruch.divide(b1, 5) = "); b3.print(); b3 = Bruch.divide(5, b2); Console.Write(" b3 = Bruch.divide( 5, b2) = "); b3.print(); Console.WriteLine("\nTest der Bruchdivision (Instanzmethoden)..."); b1.divide(b2); Console.Write("b1.divide(b2) = "); b1.print(); b1.divide(5); Console.Write("b1.divide( 5) = "); b1.print(); #endregion Helpers.zeigeProgrammende(); }