Zählen
Das zweite Muster zählt: Wie viele Zahlen erfüllen eine Bedingung? Es sieht aus wie das Addieren, aber statt des Werts addierst du 1, und nur dann, wenn eine if-Anweisung es erlaubt.
Jeder siebte Besucher eines Museums bekommt eine Postkarte geschenkt. Wie viele Postkarten verschenkt das Museum, wenn 50 Besucher kommen?
int postkarten = 0;
for (int besucher = 1; besucher <= 50; besucher++) {
if (besucher % 7 == 0) {
postkarten++;
}
}
printf("Postkarten: %d\n", postkarten);Postkarten: 7Der Zähler postkarten beginnt vor der Schleife bei 0. Die Schleife geht alle Besucher durch, und die if-Anweisung entscheidet, ob ein Besucher mitgezählt wird: besucher % 7 == 0 ist wahr, wenn der Rest bei der Division durch 7 gleich 0 ist. postkarten++ wird nur für die Besucher 7, 14, 21, 28, 35, 42 und 49 ausgeführt, am Ende hat der Zähler also den Wert 7. Auch hier gibst du das Ergebnis nach der Schleife aus.
Beachte die zwei Paare geschweifter Klammern: postkarten++ steht im Block der if-Anweisung, der im Block der Schleife steht. Wenn postkarten++ außerhalb der if-Anweisung landet (aber noch in der Schleife), zählt das Programm jeden Besucher und gibt Postkarten: 50 aus.
Eine Schleife kann auch mehrere Dinge gleichzeitig zählen, jedes in einem eigenen Zähler. Mit if und else wird jeder Besucher genau einmal gezählt, entweder im einen oder im anderen Zähler:
int postkarten = 0;
int ohne = 0;
for (int besucher = 1; besucher <= 50; besucher++) {
if (besucher % 7 == 0) {
postkarten++;
} else {
ohne++;
}
}
printf("Postkarten: %d\n", postkarten);
printf("Ohne Postkarte: %d\n", ohne);Postkarten: 7
Ohne Postkarte: 437 + 43 ist 50, einer für jeden Besucher. Die Zähler so zusammenzuzählen ist ein schneller Weg, um zu prüfen, ob du richtig gezählt hast.
So schreibst du es:
Anweisungen
- 1
In einer Straße sind die Häuser von 1 bis
HAEUSERnummeriert. Die Häuser mit ungeraden Nummern stehen auf der linken Straßenseite, die mit geraden Nummern auf der rechten. Zähle die Häuser auf der linken Seite: Erstelle eine Variablelinksmit dem Wert0, gehe die Zahlen von 1 bisHAEUSERmit einerfor-Schleife durch und erhöhelinksbei jeder ungeraden Zahl um 1. Eine Zahl ist ungerade, wenn der Rest bei der Division durch 2 gleich 1 ist. Gib das Ergebnis nach der Schleife alsLinke Seite: 13aus. - 2
Zähle in derselben Schleife die Häuser auf der rechten Seite: Erstelle vor der Schleife eine Variable
rechtsmit dem Wert0und erhöhe sie in einemelse-Zweig. Gib nach der Schleife in der nächsten ZeileRechte Seite: 12aus.