Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: The Last Hero en 15 Mayo 2011, 17:59 pm



Título: Duda con sentencia anidada en un array bidimensional(Solucionado)
Publicado por: The Last Hero en 15 Mayo 2011, 17:59 pm
Hola a todos,

Resulta que estaba mirando un ejercicio de un tutorial que sigo y me saltó una enorme duda,pego el código:
Código
  1. int numeros [10][5];
  2. int fila,columna;
  3. for(fila=0; fila<10;fila++)
  4. for(columna=0;columna<5;columna++)
  5. printf("%d", &numeros[fila][columna];


Mi dudda es,empieza en el primer for con columna=0,y continua con el segundo for.Ahí va incrementando el valor columna hasta que el valor sea menos de 5,entonces vuelve al primer for y suma uno a la columna pero...¿cuando suma ese 1 a la columna se vuelve a restaurar el segundo for?Porque supuestamente ya se habia llenado...¿entonces cuando la columna llega a 4 y suma uno a fila...se restaura el segundo for para hacer exactamente lo mismo partiendo desde 0 pero con la fila 1?

Espero que me hayan entendido porque creo que no me exprese muy bien  :xD

Bueno un saludo y gracias por adelantado.


Título: Re: Duda con sentencia anidada en un array bidimensional
Publicado por: satu en 15 Mayo 2011, 18:30 pm
Hola

Así es, cuando termina el for de dentro e incrementa el de fuera se vuelve a ejecutar el de dentro entero, es decir, inicializando la variable "columna" a cero y haciendo todo el bucle for de nuevo. Eso pasará las 10 veces que se ejecute el for más externo

Saludos


Título: Re: Duda con sentencia anidada en un array bidimensional
Publicado por: Samael.Black en 15 Mayo 2011, 18:38 pm
Hola a todos,

Resulta que estaba mirando un ejercicio de un tutorial que sigo y me saltó una enorme duda,pego el código:
Código
  1. int numeros [10][5];
  2. int fila,columna;
  3. for(fila=0; fila<10;fila++)
  4. for(columna=0;columna<5;columna++)
  5. printf("%d", &numeros[fila][columna];


Mi dudda es,empieza en el primer for con columna=0,y continua con el segundo for.Ahí va incrementando el valor columna hasta que el valor sea menos de 5,entonces vuelve al primer for y suma uno a la columna pero...¿cuando suma ese 1 a la columna se vuelve a restaurar el segundo for?Porque supuestamente ya se habia llenado...¿entonces cuando la columna llega a 4 y suma uno a fila...se restaura el segundo for para hacer exactamente lo mismo partiendo desde 0 pero con la fila 1?

Espero que me hayan entendido porque creo que no me exprese muy bien  :xD

Bueno un saludo y gracias por adelantado.
no entendí bien lo que quieres decir pero si es como funcionan los for es sencillo... analicemos... el primer for son las filas... entonces cuando empieza el primer for le dices al copilador que estará posicionado en la fila 0 de la matriz, (osea no ara nada la primera vez que lea el for mas que sumar 1 a "fila"), entonces pasara al segundo for el cual se encarga de las columnas este lo que ara, es imprimir 5 veces y cuando imprima 5 veces se supone que dará un salto de linea, en el caso de tu for no lo da ya que lo has escrito mal... primero no esta anidado pues no estas usando las corcheas  "{" "}" y segundo el primer for al final debe de llevar un salto de linea... el código quedaría así:
Código:
int numeros [10][5];
int fila,columna;
for(fila=0; fila<10;fila++)
{
     for(columna=0;columna<5;columna++)
    {
          printf("%d", &numeros[fila][columna];
     }
     printf("\n");
}

No recuerdo si ha si se da un salto de linea, ya que no suelo usar mucho la funcion printf... pero creo que ya es un poco mas entendible...

espero te ayude suerte...


Título: Re: Duda con sentencia anidada en un array bidimensional
Publicado por: The Last Hero en 15 Mayo 2011, 19:30 pm
Gracias a ambos por vuestras respuestas,ya me ha quedado todo claro  ;-)

Un saludo y gracias de nuevo