Zählen
Das zweite Muster zählt: Wie viele Elemente erfüllen eine Bedingung? Es sieht aus wie das Aufsummieren, aber statt des Werts addierst du 1, und zwar nur, wenn ein if es erlaubt:
std::vector<int> temperaturen = {18, 24, 27, 15, 31, 22, 29};
int heisseTage = 0;
for (int temperatur : temperaturen) {
if (temperatur >= 25) {
heisseTage++;
}
}
std::cout << "Heiße Tage: " << heisseTage << std::endl;Heiße Tage: 3Der Zähler heisseTage beginnt vor der Schleife bei 0. Die Schleife betrachtet jede Temperatur, und das if entscheidet, ob sie gezählt wird. heisseTage++ wird nur für 27, 31 und 29 ausgeführt, am Ende steht der Zähler also bei 3. Beachte die zwei Paare geschweifter Klammern: heisseTage++ steht im Block des if, das im Block der Schleife steht. Das Ergebnis gibst du wieder nach der Schleife aus.
Zählen funktioniert auch bei Text. Diese Schleife zählt die Kleinbuchstaben a:
std::string wort = "Abrakadabra";
int anzahl = 0;
for (char zeichen : wort) {
if (zeichen == 'a') {
anzahl++;
}
}
std::cout << "Anzahl a: " << anzahl << std::endl;Anzahl a: 4Das große A am Anfang wird nicht gezählt: 'A' und 'a' sind verschiedene Zeichen.
Eine Schleife kann auch mehrere Dinge gleichzeitig zählen, jedes in seinem eigenen Zähler. Mit if und else wird jedes Element genau einmal gezählt, entweder im einen oder im anderen Zähler.
So schreibst du es:
Anweisungen
- 1
Der Vektor
ergebnisseenthält die Punkte aus einem Test. Du bestehst mit 50 Punkten oder mehr. Zähle die Schüler, die bestanden haben: Erstelle eine Variablebestandenmit dem Wert0, geheergebnissemit einer Schleife durch und erhöhebestandenbei jedem Ergebnis von mindestens 50 um 1. Gib das Ergebnis nach der Schleife alsBestanden: 5aus. - 2
Zähle in derselben Schleife die Schüler, die durchgefallen sind: Erstelle vor der Schleife eine Variable
durchgefallenmit dem Wert0und erhöhe sie in einemelse-Zweig. Gib nach der Schleife in der nächsten ZeileDurchgefallen: 3aus.