Duda con anidamiento de "for":

Iniciado por Error 404:, 5 Septiembre 2014, 10:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Error 404:

Hola a todos, os cuento mi problema, he visto que multitud de programas contienen anidamientos de varias instrucciones "for" y la verdad es que no entiendo como funcionan estos anidamientos  :huh: . Creo que es bastante importante entenderlos por la cantidad de opciones que ofrecen, como por ejemplo el ordenamiento en burbuja, asi que si alguien me lo pudiera explicar con algún ejemplo que me indique paso a paso lo que hace o como crea que es la manera más correcta  para aprenderlo bien lo agradecería muchísimo.
Muchas gracias de antemano por su tiempo.
Si se puede imaginar, se puede programar.

ivancea96

Código (cpp) [Seleccionar]
int matriz[10][20];

for(int i=0; i<10; i++){
    for(int j=0; j<20; j++){
        matriz[i][j] = 0;
    }
}


Eso es un ejemplo de cómo inicializar una matriz. El índice i corresponde a, digamos, las filas (10 filas); mientras que j correspondería a las columnas (20 columnas).

Las asignaciones irían en este orden:

Citari,j

0,0
0,1
0,2
...
0,19
1,0
1,1
1,2
...
...
9,19

eferion

Código (cpp) [Seleccionar]

int i, j;
int total_exterior = 0;
int total_interior = 0;

for ( i=0; i< 3; i++ ) // bucle exterior
{
 total_exterior++;

 for ( j=0; j<10; j++ ) // bucle interior
 {
   printf( "i=%d j=%d", i, j );
   total_interior++;
 }
}

printf( "total_exterior = %d\n", total_exterior );
printf( "total_interior = %d\n", total_interior );


Un bucle anidado no tiene mucho misterio... el primer bucle que se ejecuta es el exterior, y por cada iteración del bucle exterior se ejecuta el bucle interior en su totalidad.

En el ejemplo que te he puesto, el bucle exterior se ejecuta 3 veces, en cada una de estas iteraciones el bucle interior se ejecuta 10 veces. al final del proceso 'total_exterior' vale 3 (el bucle exterior se ha ejecutado únicamente 3 veces) y 'total_interior' vale 30 (por cada iteración del bucle exterior, el interior se ha ejecutado 10 veces, 3 * 10 = 30 ).

Error 404:

Ahhh, entiendo, no era tan difícil, me ha ayudado mucho el pensar que es como una matriz, muchas gracias a los dos por la ayuda¡¡   ;D
Si se puede imaginar, se puede programar.