Kann mir jemand bei der Programmier aufgabe in C# helfen?
Schreiben Sie ein Programm, das zu einer eingegebenen Zahl im Bereich von 1...1000 ermittelt, wie oft diese Zahl ohne Rest durch 5 teilbar ist. Verwenden Sie hier für die kopfgesteuerte Wiederholung und den arithmetischen Operator Modulo (%) für die Abfrage..
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.");