Boucles imbriquées en C ++

Le corps d'une boucle peut lui-même contenir un en boucle cet arrangement est connu comme boucles imbriquées. La boucle interne doit procéder à l'achèvement au cours de chaque passage dans la boucle extérieure.

Un programme C ++ utilisé boucles imbriquées pour créer une table de multiplication sous la forme suivante:

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 * 1 * 7 6 1 1 * 8 * 92 * 2 * 1 0 2 2 * 2 * 2 * 3 2 4 2 2 * 5 * 6 * 7 2 2 * 2 * 9 8 // ... et ainsi de suite. ..

Vous pouvez voir que pour la ligne 0, le programme a pour itérer de la colonne 0 à la colonne 9. Le programme répète le processus pour la ligne 1, à nouveau pour la ligne 2, et ainsi de suite à droite jusqu'à la ligne 9. Cela implique la nécessité pour les deux boucles : une boucle interne pour itérer sur les colonnes et une deuxième boucle externe pour itérer sur les lignes.

Chaque position dans le tableau est tout simplement le nombre de fois d'affilée, le numéro de colonne.

Ceci est exactement comment les suivantes NestedLoops programme fonctionne:




//// NestedLoops - ce programme utilise une boucle imbriquée pour // calculer la table de multiplication comprennent .//# #comprendre #comprendre using namespace main (int nNumberofArgs, char * pszArgs []) {// afficher l'headingsint colonne de std-int nColumn = 0-cout lt; lt; "" -Pendant (nColumn lt; 10) {// définir la largeur d'affichage à deux caractères // (même pour un nombre de chiffres) cout.width (2) - // maintenant afficher le numbercout de colonne lt; lt; nColumn lt; lt; "" - // Incrément à la prochaine columnnColumn ++ -} cout lt; lt; endl - // maintenant aller boucle à travers le rowsint nRow = 0-tout (nRow lt; 10) {// commencer par le valuecout rangée lt; lt; nRow lt; lt; "-" - // Maintenant, pour chaque ligne, commencez à la colonne 0 et // passer par la colonne 9nColumn = 0-tout (nColumn lt; 10) {// afficher le produit de la colonne de rangée du * // (utilisez 2 caractères, même lorsque le produit est // un seul chiffre) cout.width (2) -cout lt; lt; nRow * nColumn lt; lt; "" - // Aller à la prochaine columnnColumn ++ -} // passez à la prochaine rownRow ++ - cout lt; lt; endl -} // attend que l'utilisateur est prêt avant de terminer le programme // pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retourner 0-}

La première section crée les têtes de colonne. Cette section initialise nColumn à 0. Il parcourt ensuite à travers nColumn imprimant sa valeur séparés par un espace jusqu'à nColumn atteint 10. A ce stade, le programme sort de la première boucle, puis vire une nouvelle ligne sur la fin pour terminer la rangée. La figure illustre ce processus graphiquement.

image0.jpg

Exécution juste cette section seule génère la sortie suivante:

0 1 2 3 4 5 6 7 8 9

L'expression cout.width (2) définit la largeur d'affichage à deux colonnes - C ++ volonté pad un espace sur la gauche pour les numéros à un seul chiffre.

La deuxième série de boucles, les boucles imbriquées, commence à nRow égal à 0. Le programme imprime le numéro de ligne suivi d'un tiret avant de se lancer dans une deuxième boucle qui commence nColumn à 0 nouveau et parcourt le sauvegarder à 9. Pour chaque passage à travers cette boucle intérieure, le programme définit la largeur de sortie à deux places, puis affiche nRow * nColumn suivi d'un espace.

La largeur d'affichage se réinitialise chaque fois que vous quelque chose de sortie, il est donc nécessaire de mettre de nouveau à chaque fois 2 avant la sortie d'un numéro.

Le programme génère une nouvelle ligne pour déplacer la sortie à la ligne suivante à chaque fois il incrémente nRow. Ceci est représenté graphiquement ici:

image1.jpg

La sortie de ce programme se présente comme suit:

 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 8 16 24 32 40 48 56 64 729-0 9 18 27 36 45 54 63 72 81Press Entrée pour continuer. . .

Il n'y a rien de magique 0 à 9 dans ce tableau. Vous pouvez tout simplement pu facilement créé un tableau de 12 x 12 de multiplication (ou toute autre combinaison) en modifiant l'expression de comparaison dans les trois tandis que boucles. Cependant, rien de plus de 10 x 10, vous aurez besoin d'augmenter la largeur minimale pour accueillir des produits à trois chiffres: utilisation cout.width (3).


» » » » Boucles imbriquées en C ++