Nested Loops in C ++

Der Körper einer Schleife kann sich eine schlaufen enthalten diese Anordnung ist bekannt als verschachtelte Schleifen. Die innere Schleife muss während jeder Zeit vollständig durch die äußere Schleife auszuführen.

Ein C ++ Programm verwendet verschachtelten Schleifen eine Multiplikationstabelle in folgender Form zu erstellen:

01234567890 0 * 0 0 * 1 0 * 2 0 * 3 0 * 4 0 * 5 0 * 6 0 * 7 0 * 8 0 * 91 1 * 0 1 * 1 1 * 2 1 * 3 1 * 4 1 * 5 1 * 6 1 * 7 1 * 8 1 * 92 2 * 0 2 * 1 2 * 2 2 * 3 2 * 4 2 * 5 2 * 6 2 * 7 2 * 8 2 * 9 // ... und so weiter. ..

Sie können aus für Zeile 0, muss das Programm durchlaufen Spalte 0 bis Spalte 9. Das Programm wiederholt den Vorgang für Zeile 1, wieder für Zeile 2, und so weiter bis hin zu rudern 9. Dies impliziert die Notwendigkeit für zwei Schleifen sehen, dass : eine innere Schleife über die Spalten und eine zweite äußere Schleife zu durchlaufen die Zeilen iterieren.

Jede Position in der Tabelle einfach die Zeilennummer mal die Spaltennummer.

Das ist genau, wie die folgenden NestedLoops Programm funktioniert:

//// NestedLoops - dieses Programm verwendet eine verschachtelte Schleife auf // die Multiplikation table.//#include berechnen #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// Anzeige der Spalte headingsint nColumn = 0-cout lt; lt; "" -Während (NColumn lt; 10) {// die Display-Breite auf zwei Zeichen // (auch für eine einstellige Zahlen) cout.width (2) - // zeigen nun die Spalte numbercout lt; lt; nColumn lt; lt; "" - // Schritt zum nächsten columnnColumn ++ -} cout lt; lt; Endl - // jetzt gehen Schleife durch die rowsint nRow = 0-while (nRow lt; 10) {// mit der Reihe valuecout starten lt; lt; nRow lt; lt; "-" - // Jetzt für jede Zeile, beginnen Sie mit der Spalte 0 und // durchlaufen Spalte 9nColumn = 0-while (nColumn lt; 10) {// Anzeige das Produkt der Spalte * Zeile // (Einsatz 2 Zeichen, selbst wenn Produkt // eine einzelne Ziffer) cout.width (2) -cout lt; lt; nRow * nColumn lt; lt; "" - // Zum nächsten columnnColumn gehen ++ -} // zum nächsten rownRow gehen ++ - cout lt; lt; Endl -} // warten, bis der Benutzer vor dem Beenden Programm bereit ist, // damit der Benutzer das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - Rückkehr 0-}

Der erste Abschnitt erzeugt die Spaltenüberschriften. In diesem Abschnitt wird initialisiert nColumn 0. Es iteriert dann durch nColumn seinen Wert durch ein Leerzeichen getrennt Ausdrucken bis nColumn erreicht das Programm beendet An dieser Stelle heftet 10. die erste Schleife und dann eine neue Zeile am Ende der Zeile zu beenden. Die Abbildung veranschaulicht diesen Prozess grafisch.

bild0.jpg

Die Ausführung gerade diesen Abschnitt allein erzeugt die folgende Ausgabe:

0 1 2 3 4 5 6 7 8 9

Der Ausdruck cout.width (2) setzt die Anzeigebreite auf zwei Säulen - C ++ polstern wird ein Raum auf der linken Seite für einstellige Zahlen.

Der zweite Satz von Schleifen, die verschachtelten Schleifen, beginnt bei nRow gleich 0 druckt das Programm die Zeilennummer gefolgt von einem Bindestrich, bevor in einer zweiten Schleife startet, die beginnt, nColumn bei 0 wieder und es wiederholt sich zurück bis 9. Für jede durch diese innere Schleife passieren, setzt das Programm die Ausgabebreite auf zwei Räume und zeigt dann nRow * nColumn gefolgt von einem Leerzeichen.

Die Anzeigebreite setzt sich jedes Mal, wenn Sie Ausgabe etwas, so ist es notwendig, sie zu 2 jedes Mal wieder einzustellen, bevor eine Reihe ausgibt.

Das Programm gibt eine neue Zeile zur Ausgabe in die nächste Zeile zu bewegen jedes Mal inkrementiert nRow. Dies ist graphisch hier gezeigt:

image1.jpg

Die Ausgabe dieses Programms sieht wie folgt aus:

 0 1 2 3 4 5 6 7 8 90 - 0 0 0 0 0 0 0 0 0 01 - 0 1 2 3 4 5 6 7 8 92-0 2 4 6 8 10 12 14 16 183-0 3 6 9 12 15 18 21 24 274-0 4 8 12 16 20 24 28 32 365-0 5 10 15 20 25 30 35 40 456-0 6 12 18 24 30 36 42 48 547-0 7 14 21 28 35 42 49 56 638-0 16 8 24 32 40 48 56 64 729-0 9 18 27 36 45 54 63 72 81Press Sie die Eingabetaste. . .

Es gibt nichts Magisches 0 bis 9 in dieser Tabelle. Sie hätten gerade erstellt leicht eine 12 x 12 Multiplikationstabelle (oder jede andere Kombination) durch den Vergleich Ausdruck in den drei Wechsel während Schleifen. Doch für etwas größer als 10 x 10, müssen Sie die Mindestbreite zu erhöhen dreistelligen Produkte aufzunehmen: Verwenden Sie cout.width (3).

Menü