C#: Wie kann ich den nächstmöglichen Divisor finden?

1 Antwort

Das Preogramm ist offenbar ein Rechentrainer, mit dem das Rechnen mit natürlichen Zahlen geübt werden soll.

Ich denke, dass es für die Herstellung einer Divisionsaufgabe cleverer wäre, den Divisor und das Divisionsergebnis mit dem Zufallsgenerator zu erzeigen und den Dividend dann auszurechnen als

 zahl1 = zahl2*ergebnis;

Noch ein Hinweis zum Vergleich von Zeichenreihen: Zeichenreihen werden in C# grundsätzlich nicht mit den Operatoren == und != verglichen. Was du eigentlich machen willst und auch codieren musst, ist dieses:

antwort.Equals("Ja")

und für den Vergleich auf Ungleichheit

!antwort.Equals("Ja")

Die Operatoren == und != prüfen die Objektidentität; das ist nicht das, was du in deinem Programm tun möchtest.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler
DANIELdjldqwj 
Fragesteller
 30.06.2023, 10:18

Danke, habe es jetzt auf eine andere möglichkeit geregelt. Aber auch da brauch ich hilfe, wie ziehe ich von dem ergebnis das modulo ab?
using System;

class Matheaufgabe

{

  private enum OperationType

  {

    Addition = 0,

    Subtraktion = 1,

    Multiplikation = 2,

    Division = 3

  }

  static void Main()

  {

    bool weitermachen = true;

    

    Console.WriteLine("Möchten Sie eine Aufgabe berechnen? [Ja|Nein]");

    string antwort = Console.ReadLine().ToLower();

    while (antwort != "ja" && antwort != "nein")

    {

      Console.WriteLine("Bitte geben Sie 'Ja' oder 'Nein' ein.");

      antwort = Console.ReadLine().ToLower();

    }

    if (antwort == "ja")

    {

      while (weitermachen)

      {

        Random random = new Random();

        int zahl1;

        int zahl2;

        int ergebnis;

        char operatorChar;

        OperationType operatorIndex = (OperationType)random.Next(4);

        if (operatorIndex == OperationType.Division) 

        {

          zahl1 = random.Next(1, 101);

          zahl2 = random.Next(1, zahl1 + 1);

          if (zahl1 % zahl2 != 0)

          {

            ergebnis - 1;

          }

        }

        else

        {

          zahl1 = random.Next(1, 101);

          zahl2 = random.Next(1, 101);

        }

        switch (operatorIndex)

        {

          case OperationType.Addition:

            operatorChar = '+';

            ergebnis = zahl1 + zahl2;

            break;

          case OperationType.Subtraktion:

            operatorChar = '-';

            ergebnis = zahl1 - zahl2;

            break;

          case OperationType.Multiplikation:

            operatorChar = '*';

            ergebnis = zahl1 * zahl2;

            break;

          case OperationType.Division:

            operatorChar = '/';

            ergebnis = zahl1 / zahl2;

            break;

          default:

            throw new InvalidOperationException($"Ungültiger Wert für {nameof(operatorIndex)}");

        }

         

        Console.WriteLine($"Wie lautet das Ergebnis von {zahl1.ToString()} {operatorChar.ToString()} {zahl2.ToString()}?");

        

        int benutzerErgebnis;

        bool validInput;

        do

        {

          validInput = int.TryParse(Console.ReadLine(), out benutzerErgebnis);

          if (!validInput)

            Console.WriteLine("Bitte geben Sie eine Zahl ein.");

        } while (!validInput);

        if (benutzerErgebnis == ergebnis)

          Console.WriteLine("Richtig");

        else

          Console.WriteLine("Falsch! Das richtige Ergebnis wäre: " + ergebnis);

        Console.WriteLine("Möchten Sie eine weitere Aufgabe lösen? (Ja/Nein)");

        antwort = Console.ReadLine().ToLower();

        while (antwort != "ja" && antwort != "nein")

        {

          Console.WriteLine("Bitte geben Sie 'Ja' oder 'Nein' ein.");

          antwort = Console.ReadLine().ToLower();

        }

        if (antwort == "nein")

        { 

          weitermachen = false; 

        }

      }

    }

    Console.WriteLine("Bis zum nächsten Mal");

    Console.ReadKey();

  }

}

0