Nested loops and patterns · Loops aninhados e padrões
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.
Um loop dentro de outro loop
- Você pode colocar um loop dentro de outro. O loop interno executa totalmente para cada etapa do loop externo.
- É assim que você trabalha com linhas e colunas, ou compara todo par de itens.
- Se o loop externo rodar
Rvezes e o interno rodarCvezes, o corpo interno rodaR × Cvezes.
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.
Linhas e colunas
- Pense no loop externo como a linha e no loop interno como a coluna.
- Para um bloco de
*, o loop externo escolhe uma linha; o loop interno imprime as estrelas naquela linha. - Após o loop interno terminar uma linha, imprima uma nova linha
\npara começar a próxima.
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.
Construindo uma linha, depois um bloco
printf("*")imprime uma estrela sem ir para uma nova linha.- Imprima todas as estrelas de uma linha primeiro, depois um
printf("\n")para terminar a linha. - Repita para cada linha, e as linhas empilhadas formam um bloco.
#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.
Contando com loops aninhados
- Loops aninhados também contam pares. Para contar pares
(i, j)comi < j, inicie o loop interno emi + 1. - Um counter dentro do loop interno soma as correspondências.
- Observe os valores inicial e final — erros off-by-one são comuns aqui.
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.
Erros comuns
- O loop interno executa totalmente para cada única volta do loop externo.
- Verifique os limites para que um padrão não tenha linha extra ou faltando.
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.
Agora você tenta
- Use um inner
printfsem\npara construir uma linha, depois umprintf("\n")para terminá-la. - Para a tarefa de função, não escreva um
main— o verificador fornece um.
In main, use nested loops to print a 3×3 block of * — three stars on each of three lines. · Em main, use loops aninhados para imprimir um bloco 3×3 de * — três asteriscos em cada uma das três linhas.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
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. · Em main, imprima um triângulo alinhado à esquerda de * com 4 linhas: linha 1 tem um *, linha 2 tem dois, até linha 4 com quatro.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
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 · não write a main. · Complete int count_pairs(int n) para retornar quantos pares (i, j) satisfazem 1 <= i < j <= n. Use loops aninhados (inicie o loop interno em i + 1). Não escreva um main.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.