Verschachtelte Schleifen
Eine Schleife kann eine andere Schleife enthalten. Das nennt man eine verschachtelte Schleife. In jedem Durchlauf der äußeren Schleife läuft die innere Schleife einmal komplett durch. Listen wir alle Mittagessen auf, die eine Kantine anbietet: jedes Gericht mit jedem Getränk.
std::vector<std::string> gerichte = {"Pizza", "Pasta"};
std::vector<std::string> getraenke = {"Wasser", "Saft", "Tee"};
for (std::string gericht : gerichte) {
for (std::string getraenk : getraenke) {
std::cout << gericht << " " << getraenk << std::endl;
}
}Das gibt aus:
Pizza Wasser
Pizza Saft
Pizza Tee
Pasta Wasser
Pasta Saft
Pasta TeeDie äußere Schleife nimmt "Pizza", und die innere Schleife geht alle drei Getränke durch. Erst dann nimmt die äußere Schleife "Pasta", und die innere geht wieder alle Getränke durch. Der innere Block wird 2 × 3 = 6-mal ausgeführt. Gib den Variablen der beiden Schleifen verschiedene Namen (hier gericht und getraenk), damit du weißt, welche welche ist.
Verschachtelte Schleifen sind auch für Tabellen praktisch. Hier zählen beide Schleifen mit einem Index. Die innere Schleife gibt eine Zeile in einer Zeile aus, und std::endl danach beendet die Zeile:
for (int zeile = 1; zeile <= 3; zeile++) {
for (int spalte = 1; spalte <= 5; spalte++) {
std::cout << zeile * spalte << " ";
}
std::cout << std::endl;
}1 2 3 4 5
2 4 6 8 10
3 6 9 12 15 Sieh dir an, wo std::cout << std::endl; steht: nach der schließenden Klammer der inneren Schleife, aber noch innerhalb der äußeren. Es wird jedes Mal ausgeführt, wenn die innere Schleife eine ganze Zeile ausgegeben hat. In der inneren Schleife würde es jede Zahl in eine eigene Zeile setzen. Nach der äußeren Schleife würde es alle Zahlen in eine lange Zeile setzen.
So schreibst du es:
Anweisungen
- 1
Ein Reisebüro bietet zu jeder Stadt in
staedteeine Reise mit jeder Aktivität inaktivitaetenan. Schreibe eine Schleife überstaedteund darin verschachtelt eine Schleife überaktivitaeten. Gib jedes Paar in einer eigenen Zeile aus: die Stadt, ein Leerzeichen und die Aktivität. Die Ausgabe hat 12 solche Zeilen und beginnt mitBerlin Tennis,Berlin Shoppen,Berlin Besichtigung,Hamburg Tennis… - 2
Gib darunter ein Einmaleins von 1 bis 5 aus: fünf Zeilen mit je fünf Zahlen, durch Leerzeichen getrennt. Die erste Zeile ist
1 2 3 4 5, die zweite2 4 6 8 10und die letzte5 10 15 20 25. Verwende zwei verschachteltefor-Schleifen mit Index und beende jede Zeile mitstd::endlin der äußeren Schleife.