// Objekte auf Wertgleichheit prüfen static void Vergleichen() { Bruch b1 = new Bruch(1, 3); Bruch b2 = new Bruch(1, 3); bool verweisgleich = b1 == b2; Console.WriteLine("Verweisgleich: " + verweisgleich); bool wertgleich = b1.Equals(b2); Console.WriteLine("Wertgleich: " + wertgleich); Bruch b3 = new Bruch(1, 4); Console.WriteLine(b3.CompareTo(b1)); }
internal static void ErgebnisAnzeigen(Bruch bruch1, Bruch bruch2, Bruch ergebnis, Operator aktuellerOperator) { Bereinigen(); if (ergebnis.Zaehler != ergebnis.Nenner) { Anzeigen($"{bruch1} {(char)aktuellerOperator} {bruch2} = {ergebnis}"); } else if (ergebnis.Zaehler == 1 && ergebnis.Nenner == 1) { Anzeigen($"{bruch1} {(char)aktuellerOperator} {bruch2} = {ergebnis} = 1"); } else { Anzeigen($"{bruch1} {(char)aktuellerOperator} {bruch2} = {ergebnis} = -1"); } Leerzeichen(); }
public static Bruch BruchBerechnen(Bruch bruch1, Bruch bruch2, Operator aktuellerOperator) { if (aktuellerOperator == Operator.Addition) { return(bruch1.Addieren(bruch2)); } else if (aktuellerOperator == Operator.Subtraktion) { return(bruch1.Subtrahieren(bruch2)); } else if (aktuellerOperator == Operator.Multiplikation) { return(bruch1.Multiplizieren(bruch2)); } else if (aktuellerOperator == Operator.Division) { return(bruch1.Dividieren(bruch2)); } else { throw new NotImplementedException(); } }
internal static void BruecheAnzeigen(Bruch bruch1, Bruch bruch2, Operator aktuellerOperator) { Bereinigen(); Anzeigen($"{bruch1} {(char)aktuellerOperator} {bruch2}"); Leerzeichen(); }
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 - 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(); }
public void NullImNennerSpezialkonstruktor() { _ = new Bruch(1, 0); }
// Gibt einen Bruch aus public void GebeBruchAus(Bruch bruch) { GebeTextAus($"{bruch.Zaehler}/{bruch.Nenner}"); }
public double multiplizieren(Bruch a, Bruch b) { return(Ergebnis); }
public double subtrahieren(Bruch a, Bruch b) { return(Ergebnis); }
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(); }
public Bruch Multipliziere(Bruch b) { return(new Bruch(zaehler * b.Zaehler, nenner * b.Nenner)); }
public static bool BruecheEingeben(Bruch bruch1, Bruch bruch2, Operator aktuellerOperator) { var zaehler1 = bruch1.Zaehler; var nenner1 = bruch1.Nenner; var zaehler2 = bruch2.Zaehler; var nenner2 = bruch2.Nenner; // Zahlen als Input abfragen und validieren Ausgabe.Anzeigen("Bitte ersten Zähler eingeben."); // Wenn ZahlValidieren false, Eingabe abgebrochen if (!ZahlValidieren(ref zaehler1)) { return(false); } bruch1.Zaehler = zaehler1; Ausgabe.BruecheAnzeigen(bruch1, bruch2, aktuellerOperator); // Bei Nenner auf Nulldivision achten while (nenner1 == 0) { Ausgabe.Anzeigen("Bitte ersten Nenner eingeben."); if (!ZahlValidieren(ref nenner1)) { return(false); } if (nenner1 == 0) { Ausgabe.Anzeigen("Nenner dürfen nicht 0 sein!"); } } bruch1.Nenner = nenner1; Ausgabe.BruecheAnzeigen(bruch1, bruch2, aktuellerOperator); Ausgabe.Anzeigen("Bitte zweiten Zähler eingeben."); if (!ZahlValidieren(ref zaehler2)) { return(false); } bruch2.Zaehler = zaehler2; Ausgabe.BruecheAnzeigen(bruch1, bruch2, aktuellerOperator); // Bei Nenner auf Nulldivision achten while (nenner2 == 0) { Ausgabe.Anzeigen("Bitte zweiten Nenner eingeben."); if (!ZahlValidieren(ref nenner2)) { return(false); } if (nenner2 == 0) { Ausgabe.Anzeigen("Nenner dürfen nicht 0 sein!"); } } bruch2.Nenner = nenner2; Ausgabe.BruecheAnzeigen(bruch1, bruch2, aktuellerOperator); return(true); }
static void Main(string[] args) { Helpers.zeigeTitel("Bruchrechnung", "Version 1"); // Test Defaultkonstruktor Console.WriteLine("Test Defaultkonstruktor"); Bruch b1 = new Bruch(); Console.WriteLine("Bruch b1 = new Bruch() ausgeführt"); Console.Write("b1.print() -> "); b1.print(); Console.Write("b1.dprint() -> "); b1.dprint(); // Test Customkonstruktor Console.WriteLine("\nTest Customkonstruktoren"); Bruch b2 = new Bruch(4, 7); Console.WriteLine("Bruch b2 = new Bruch(4, 7) ausgeführt"); Console.Write("b2.print() -> "); b2.print(); Console.Write("b2.dprint() -> "); b2.dprint(); // Test Customkonstruktor Bruch b3 = new Bruch(4, 0); Console.WriteLine("Bruch b3 = new Bruch(4, 0) ausgeführt"); Console.Write("b3.print() -> "); b3.print(); Console.Write("b3.dprint() -> "); b3.dprint(); // Test Customkonstruktor Bruch b4 = new Bruch(4); Console.WriteLine("Bruch b4 = new Bruch(4) ausgeführt"); Console.Write("b4.print() -> "); b4.print(); Console.Write("b4.dprint() -> "); b4.dprint(); // Test Customkonstruktor mit Eingaben Console.Write("Zähler eingeben: "); int zaehler = Convert.ToInt32(Console.ReadLine()); Console.Write("Nenner eingeben: "); int nenner = Convert.ToInt32(Console.ReadLine()); Bruch b5 = new Bruch(zaehler, nenner); Console.WriteLine("Bruch b5 = new Bruch({0}, {1}) ausgeführt", zaehler, nenner); Console.Write("b5.print() -> "); b5.print(); Console.Write("b5.dprint() -> "); b5.dprint(); // Test Copykonstruktor Console.WriteLine("\nTest Copykonstruktor"); Bruch b6 = new Bruch(b5); Console.WriteLine("Bruch b6 = new Bruch(b5) ausgeführt"); Console.Write("b6.print() -> "); b6.print(); Console.Write("b6.dprint() -> "); b6.dprint(); // Test Zuweisung Console.WriteLine("\nTest Zuweisung von Referenzvariablen"); b1 = b6; Console.WriteLine("b1 = b6 ausgeführt"); Console.Write("b1.print() -> "); b1.print(); Console.Write("b1.dprint() -> "); b1.dprint(); Helpers.zeigeProgrammende(); }
public double dividieren(Bruch a, Bruch b) { return(Ergebnis); }
public void BruecheZurucksetzen() { bruch1 = new Bruch(); bruch2 = new Bruch(); ergebnis = new Bruch(); }
// Spezialkonstruktor public Userinterface(Bruch bruch, string text) { this.Bruch = bruch; this.Text = text; }