Nested loops and patterns · Boucles imbriquées et motifs
A loop inside a loop
- You can put one loop inside another. The inner loop runs fully for each step of the outer loop.
- This is how you work with rows and columns, or compare every pair of items.
- If the outer loop runs
Rtimes and the inner runsCtimes, the inner body runsR × Ctimes.
Une boucle dans une boucle
- Vous pouvez placer une boucle à l'intérieur d'une autre. La boucle intérieure s'exécute entièrement pour chaque étape de la boucle extérieure.
- C'est ainsi que vous traitez des lignes et des colonnes, ou comparez chaque paire d'éléments.
- Si la boucle extérieure s'exécute
Rfois et l'intérieureCfois, le corps intérieur s'exécuteR × Cfois.
Rows and columns
- Think of the outer loop as the row and the inner loop as the column.
- For a block of
*, the outer loop picks a row; the inner loop prints the stars in that row. - After the inner loop finishes a row, print a newline
\nto start the next row.
Lignes et colonnes
- Pensez à la boucle extérieure comme à la ligne et à la boucle intérieure comme à la colonne.
- Pour un bloc de
*, la boucle extérieure choisit une ligne ; la boucle intérieure imprime les étoiles de cette ligne. - Après que la boucle intérieure ait terminé une ligne, imprimez un saut de ligne
\npour commencer la suivante.
Building a line, then a block
printf("*")prints one star without moving to a new line.- Print all the stars for one row first, then one
printf("\n")to end the row. - Repeat for every row, and the rows stack into a block.
Construire une ligne, puis un bloc
printf("*")imprime une étoile sans passer à la ligne suivante.- Imprimez toutes les étoiles pour une ligne, puis un
printf("\n")pour terminer la ligne. - Répétez pour chaque ligne, et les lignes s'empilent pour former un bloc.
#include <stdio.h>
int main(void) {
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
printf("*");
}
printf("\n"); // end the row
}
return 0;
}
Counting with nested loops
- Nested loops also count pairs. To count pairs
(i, j)withi < j, start the inner loop ati + 1. - A counter inside the inner loop adds up the matches.
- Watch the start and end values — off-by-one mistakes are common here.
Compter avec des boucles imbriquées
- Les boucles imbriquées comptent aussi des paires. Pour compter des paires
(i, j)aveci < j, commencez la boucle intérieure ài + 1. - Un compteur à l'intérieur de la boucle intérieure additionne les correspondances.
- Surveillez les valeurs de départ et de fin — les erreurs off-by-one sont courantes ici.
Common mistakes
- The inner loop runs fully for each single turn of the outer loop.
- Check the bounds so a pattern has no extra or missing row.
Erreurs courantes
- La boucle intérieure s'exécute entièrement pour chaque passage unique de la boucle extérieure.
- Vérifiez les bornes pour qu'un motif n'ait pas de ligne supplémentaire ou manquante.
Now you try
- Use an inner
printfwithout\nto build a row, then aprintf("\n")to end it. - For the function task, do not write a
main— the checker provides one.
À vous maintenant
- Utilisez une boucle intérieure
printfsans\npour construire une ligne, puis unprintf("\n")pour la terminer. - Pour la tâche de fonction, n'écrivez pas de
main— le vérificateur en fournit une.
In main, use nested loops to print a 3×3 block of * — three stars on each of three lines. · Dans main, utilisez des boucles imbriquées pour imprimer un bloc 3×3 de * — trois étoiles sur chacune des trois lignes.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
In main, print a left-aligned triangle of * that is 4 rows tall: row 1 has one *, row 2 has two, up to row 4 with four. · Dans main, imprimez un triangle aligné à gauche de * haut de 4 lignes : la ligne 1 a un *, la ligne 2 en a deux, jusqu'à la ligne 4 avec quatre.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete int count_pairs(int n) so it returns how many pairs (i, j) satisfy 1 <= i < j <= n. Use nested loops (start the inner loop at i + 1). Do not · non write a main. · Complétez int count_pairs(int n) pour qu'il retourne combien de paires (i, j) satisfont 1 <= i < j <= n. Utilisez des boucles imbriquées (commencez la boucle interne à i + 1). Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.