Kann mir jemand bei der Programmier aufgabe in C# helfen?

jo135  08.01.2024, 08:30

Was ist unklar, was hast du schon?

Darksad 
Fragesteller
 08.01.2024, 08:34

Mir ist die Aufgabe allgemein unklar da ich nicht wirklich weiß wie das mit der division funktioniert.

3 Antworten

Eine Zahl ist durch eine andere ganzteilig teilbar, wenn ihr Rest 0 ergibt.

Beispiele:

 5 / 2 = 2 Rest 1  //  5 - (2 * 2) + 1
 8 / 2 = 4 Rest 0  //  8 - (2 * 4) + 0
11 / 3 = 3 Rest 2  // 11 - (3 * 3) + 2

Um den Rest einer Division zu berechnen, gibt es in C# den Modulo-Operator (%).

Beispiel:

int rest = 5 % 2; // 1

wie oft diese Zahl ohne Rest durch 5 teilbar ist

Damit ist gemeint, wie oft der Faktor 5 drinsteckt: 15=3·5, 500=2·2·5·5·5.

solange die Zahl durch 5 teilbar ist, tu's einfach (und zähle mit):

int power = 0;
while (number % 5) {
    number /= 5;
    power++;
}

Die Aufgabe ist wirklich ziemlich merkwürdig. Normalerweise würde man das einfach mit einer Integer-Division machen:

Console.WriteLine("Bitte geben Sie eine Zahl zwischen 1 und 1000 ein.");
int number = int.Parse(Console.ReadLine());
Console.WriteLine($"5 passt {number / 5} mal in {number} hinein.");

Man kann die Division natürlich auch durch mehrfache Subtraktion in einer Schleife machen, auch wenn es unsinnig ist:

Console.WriteLine("Bitte geben Sie eine Zahl zwischen 1 und 1000 ein.");
int inputNumber = int.Parse(Console.ReadLine());
int number = inputNumber;
int quotient = 0;
while (number >= 5) {
    quotient++;
    number -= 5;
}
Console.WriteLine($"5 passt {quotient} mal in {inputNumber} hinein.");

Mir fällt aber ehrlichgesagt keine Variante ein, wie man den Modulo-Operator da einbringen soll.

Das einzige, was vielleicht gemeint sein könnte, was aber echt bescheuert wäre, es so zu machen, ist wenn man wirklich jede Zahl von 1 bis x durchgeht und testet, ob sie durch 5 teilbar ist. Falls das die Lösung ist, würde ich aber dem Lehrer mal sagen, dass er euch bitte nicht die schlechtestmögliche Problemlösung beibringen soll:

Console.WriteLine("Bitte geben Sie eine Zahl zwischen 1 und 1000 ein.");
int inputNumber = int.Parse(Console.ReadLine());
int quotient = 0;
for (int number = 1; number <= inputNumber; number++) {
    if (number % 5 == 0) {
        quotient++;
    }
}
Console.WriteLine($"5 passt {quotient} mal in {inputNumber} hinein.");