2
respostas

[Dúvida] Exibir números

#include <stdio.h>

int main(){
    char numeros [20] [10];

    for(int i = 0; i < 19; i++){
        for(int j =0; j < 9; j++){
            printf("%d", numeros [i][j]);
        }
        printf("\n");
    }
}

O meu código deu certo, mas me surgiu uma dúvida no processo de criação dele. A dúvida é a seguinte, quando eu coloco um FOR dentro de outro FOR, o segundo for executa o loop até a condição especificada ou faz o loop apenas uma vez e vai para o for inicial, assim executando o loop do for inicial e depois voltando para o for secundário até atingir a sua condição?

2 respostas

Facilitando o FOR mais ainda para saber como a interação funciona.

for(int i = 0; i < 3; i++){
        for(int j =0; j < 2; j++){
            printf("j");
        }
        printf("i");
    }

output >> j j i j j i j j i

Para cada passagem do for i vai imprimir o máximo do for j

Olá Natan!

A funcionalidade dos loops são de executar um determinado bloco de comando enquanto a condição é atedida. Vamos analisar seu código:

#include <stdio.h>

int main(){
    char numeros [20] [10];

    for(int i = 0; i < 19; i++)  //for 1
    {
        for(int j =0; j < 9; j++)  //for 2
        {
            printf("%d", numeros [i][j]);
        }
        printf("\n");
    }
}

O "for 1" inicia em 0, ai entra o "for 2" começando tbm em 0;

O "for 2" vai executar todo seu bloco de comando até que a condição ( j < 9) ainda esteja retornando verdadeiro.

Assim que o "for 2" acabar, o "for 1" vai executar novamente, mas agr com o valor 1, e assim que o "for 2" é finalizado novamente o "for 1" vai ser novamente iterado, agora com o valor de 2, e o "for 2" será executado novamente... ficará assim até o "for 1" chegar no fim da sua condição (i < 19).

Ou seja, pra cada vez que o "for 1" iterar uma vez o "for 2" vai iterar 9 vezes ( de 0 a 8 ).

Quando há um loop dentro de outro, quem está dentro é iterado por completo (caso não exista "break" ) toda vez que o loop externo itera em 1;

Isso vale para todos os loops.