static void Main(string[] args) { Helpers.zeigeTitel("Bruchrechnung - Array von Brüchen"); #region 1. Brucharray mit Zufallsbrüchen erzeugen const int MAX = 10; Console.WriteLine("1. Erzeuge " + MAX + " Zufallsbrüche..."); // Array mit Referenzvariablen erzeugen Bruch[] brueche = new Bruch[MAX]; // Zufallsszahlengenerator erzeugen (wird mit Zeit initilaisiert) Random rnd = new Random(); // In jeder Referenzvariablen des Array einen // neuen Bruch mit zufälligem Zähler/Nenner mittels // Instanzmethode Next(min, max) erzeugen for (int i = 0; i < brueche.Length; i++) { brueche[i] = new Bruch(rnd.Next(1, 10), rnd.Next(1, 10)); } #endregion #region 2. Alle Brüche kürzen Console.WriteLine("\n2. Kürze alle Zufallsbrüche..."); foreach (Bruch bruch in brueche) { bruch.reduce(); } // Alternativ mit for-Schleife //for (int i = 0; i < brueche.Length; i++) // brueche[i].reduce(); // Alternative mit Klassenmethode reduce (Bruch b) //for (int i = 0; i < brueche.Length; i++) // brueche[i] = Bruch.reduce(brueche[i]); #endregion #region 3. Alle Brüche in der Form Zähler / Nenner ausgeben Console.WriteLine("\n3. Ausgabe aller Zufallsbrüche..."); foreach (Bruch bruch in brueche) { bruch.print(); } // Alternativ durch überladenen Konversionsoperator string // foreach (Bruch bruch in brueche) // Console.WriteLine((string)bruch); // Alternativ mit for-Schleife //for (int i = 0; i < brueche.Length; i++) // brueche[i].print(); #endregion #region 4. Alle Büche als Dezimalzahl ausgeben Console.WriteLine("\n4. Ausgabe der Dezimalwerte aller Zufallsbrüche..."); // Verwendung der Nur-Lese-Eigenschaft Number des Bruchs foreach (Bruch bruch in brueche) { Console.WriteLine(bruch.Number); } // Alternativ mit for-Schleife //for (int i = 0; i < brueche.Length; i++) // Console.WriteLine(brueche[i].Number); #endregion #region 5. Die Summe aller Brüche bestimmen und ausgeben Console.WriteLine("\n5. Summiere alle Zufallsbrüche..."); Bruch summe = new Bruch(); foreach (Bruch bruch in brueche) { summe.add(bruch); // Kürzen sinnvoll, da andernfalls sehr große Nenner durch die // Multiplikation entstehen können und ggfs. der Wertebereich // für int überschritten werden könnte. // summe.reduce(); } // Alternativ: Nutzung des in Bruchklasse überladenen Operators + //Bruch summe = new Bruch(); //foreach (Bruch bruch in brueche) //{ // summe += bruch; // summe.reduce(); //} // Alternativ mit for-Schleife //Bruch summe = new Bruch(); //for (int i = 0; i < brueche.Length; i++) //{ // summe.add(brueche[i]); // oder summe += brueche[i]; // summe.reduce(); //} // Alternativ mit Copy-Konstruktor und for-Schleife //Bruch summe = new Bruch(brueche[0]); //for (int i = 1; i < brueche.Length; i++) //{ // summe.add(brueche[i]); // oder summe += brueche[i]; // summe.reduce(); //} Console.WriteLine("Summe aller Zufallsbrüche..."); summe.print(); summe.dprint(); #endregion #region 6. Die Summe aller Brüche kürzen und ausgeben Console.WriteLine("\n6. Gekürzte Summe alle Zufallsbrüche..."); summe.reduce(); summe.print(); summe.dprint(); #endregion 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(); }