Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ;c1v!c en 15 Agosto 2011, 20:42 pm



Título: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 20:42 pm
hola como hago para declarar la matriz y q me muestre todos los valores filas por filas.
tengo esto hasta ahora:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int n1,n2,i,j;
  6.  
  7.  
  8. printf("Ingrese el numero de columnas de la matriz:");
  9. scanf("%d",&n1);
  10. printf("Ingrese el numero de filas de la matriz:");
  11. scanf("%d",&n2);
  12.  
  13. for (i=0;i<n1;i++)
  14. {
  15. for (j=0;j<n2;j++)
  16. {
  17. printf("%d |",i);
  18. printf("%d |",j);
  19. }
  20. }
  21.  
  22. return 0;
  23. }


Título: Re: matriz
Publicado por: Valkyr en 15 Agosto 2011, 21:11 pm
Para declarar una matriz de enteros:

Código
  1. int n1,n2,i,j;
  2.  
  3.  
  4. printf("Ingrese el numero de columnas de la matriz:");
  5. scanf("%d",&n1);
  6. printf("Ingrese el numero de filas de la matriz:");
  7. scanf("%d",&n2);
  8.  
  9.        int matriz[n1][n2];
  10.        //Leer numeros y almacenarlos en la matriz
  11. for (i=0;i<n1;i++)
  12. {
  13. for (j=0;j<n2;j++)
  14. {
  15. scanf("%d", &matriz[i][j]);
  16. }
  17. }
  18.  
  19.        //Mostrarla por pantalla
  20. for (i=0;i<n1;i++)
  21. {
  22. for (j=0;j<n2;j++)
  23. {
  24. printf("%d |",matriz[i][j]);
  25. }
  26. }
  27.  

Saludos.


Título: Re: matriz
Publicado por: Dark Invader en 15 Agosto 2011, 21:13 pm
¿Quieres una matriz bidimensional?.Esta te pide filas,columnas,rellenas los datos de cada fila y columna y los muestra en pantalla:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int matriz[10][8];
  6. int x,y,numero,numero2;
  7. printf("columnas");
  8. scanf ("%d",&numero);
  9. setbuf(stdin,NULL);
  10. printf("filas");
  11. scanf("%d",&numero2);
  12. setbuf(stdin,NULL);
  13. for (x=0;x<numero;x++){
  14. for (y=0;y<numero;y++){
  15. printf("introduzca %d columna %d fila: ",x,y);
  16. scanf("%d",&matriz[x][y]);
  17. setbuf(stdin,NULL);
  18. }
  19. }
  20.  for (x=0;x<numero;x++){
  21. for (y=0;y<numero;y++){
  22. printf("\nVALOR DE LAS MATRICES:%d",matriz[x][y]);
  23. }
  24.  }
  25. return 0;
  26. }

¿Es algo parecido a esto lo que querias?

PD:Se me adelantaron  :xD


Título: Re: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 21:17 pm
a vos te compila¿? a mi no me anda me salen numero gigantes!!
Saludos!


Título: Re: matriz
Publicado por: Dark Invader en 15 Agosto 2011, 21:21 pm
¿A cual de los dos codigos te refieres? :huh: Si es el mio me sale perfectamente...


Título: Re: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 21:24 pm
¿A cual de los dos codigos te refieres? :huh: Si es el mio me sale perfectamente...

si el tuyo me anda perfecto pero lo q estoy necesitando es como el primero, pero no me funciona!
Saludos!


Título: Re: matriz
Publicado por: Dark Invader en 15 Agosto 2011, 21:33 pm
El primero no funciona porque no establece un valor inicial al array,un array no puede tener un valor no definido en tiempo de ejecucion,necesita un valor inicial,no que espere que el usuario ponga las variables y ponerlas en el array...Para eso se necesitarias un array dinamico con malloc puedes hacerlo...

En el codigo que te di te da el numero de filas,el de columnas,pone valores y los muestra en pantalla¿que necesitas realmente?


Título: Re: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 21:36 pm
necesito una matriz de X filas por X columnas y q imprima sus valores fila x fila.
Saludos


Título: Re: matriz
Publicado por: Dark Invader en 15 Agosto 2011, 21:46 pm
Pero eso es lo que hace el codigo que te puse  :¬¬


Título: Re: matriz
Publicado por: PiroskY en 15 Agosto 2011, 21:49 pm
Teniendo una matriz de X filas e Y columnas, la manera de mostrar fila por fila seria así:

Código
  1. for(int i=0 ; i < X ; i++)
  2. {
  3.    for(int j=0 ; j < Y ; j++)
  4.        cout << matriz[i][j] << " ";
  5.  
  6.    cout << endl;
  7. }

Ahora, vos también necesitas que el usuario determine las dimensiones de la matriz?


Título: Re: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 21:56 pm
Pero eso es lo que hace el codigo que te puse  :¬¬

si pero el usuario lo unico q tiene q hacer es ingresar el numero de columnas y el numero de filas.
ahora veo si lo armo con todos los codigos q me pasaron gracias!
Saludos!


Título: Re: matriz
Publicado por: Dark Invader en 15 Agosto 2011, 22:29 pm
Ahh,pero si no guardas ningun valor en las matrices te saldran numeros que no tienen nada que ver con el tema,por eso puse lo de ponerle valor a las filas y columnas...


Título: Re: matriz
Publicado por: ;c1v!c en 15 Agosto 2011, 22:33 pm
ahhh sii tienes razon me salieron cualquier numeros jejeje
bueno ya me dieron una idea voy a ver como lo armo
gracias a todos por contestar cuando tenga les dejo la solucion
saludos!!


Título: Re: matriz
Publicado por: Valkyr en 16 Agosto 2011, 02:21 am
El código que puse anteriormente es correcto (o al menos, eso creo porque he usado más C++ que C). Lo he compilado (completando el código ya que falta incluir la librería, declarar el método main y return 0) y ha compilado perfectamente. Lo he ejecutado y el resultado que ha mostrado es el correcto.

Sí lo que quieres es que el usuario solo especifique el tamaño de la matriz es lógico que a la hora de recorrerla te muestre valores extraños (a saber lo que había en la posición de memoria anteriormente).

Si por el contrario lo que quieres es que el usuario especifique los valores de la matriz, el código que puse es correcto.

Saludos.


Título: Re: matriz
Publicado por: Dark Invader en 16 Agosto 2011, 10:47 am
El código que puse anteriormente es correcto (o al menos, eso creo porque he usado más C++ que C). Lo he compilado (completando el código ya que falta incluir la librería, declarar el método main y return 0) y ha compilado perfectamente. Lo he ejecutado y el resultado que ha mostrado es el correcto.

Sí lo que quieres es que el usuario solo especifique el tamaño de la matriz es lógico que a la hora de recorrerla te muestre valores extraños (a saber lo que había en la posición de memoria anteriormente).

Si por el contrario lo que quieres es que el usuario especifique los valores de la matriz, el código que puse es correcto.

Saludos.

Si tienes razón,estaba hablando desde el punto de vista de C,de C++ no sabia que si se podia... :-\


Título: Re: matriz
Publicado por: rir3760 en 19 Agosto 2011, 17:35 pm
Código anterior de Valkyr:
Código
  1. int n1, n2, i, j;
  2.  
  3. printf ("Ingrese el numero de columnas de la matriz:");
  4. scanf ("%d", &n1);
  5. printf ("Ingrese el numero de filas de la matriz:");
  6. scanf ("%d", &n2);
  7.  
  8. int matriz[n1][n2];
  9. //Leer numeros y almacenarlos en la matriz
  10. for (i = 0; i < n1; i++)
  11. {
  12.   for (j = 0; j < n2; j++) {
  13.      scanf ("%d", &matriz[i][j]);
  14.   }
  15. }
  16.  
  17. //Mostrarla por pantalla
  18. for (i = 0; i < n1; i++)
  19. {
  20.   for (j = 0; j < n2; j++) {
  21.      printf ("%d |", matriz[i][j]);
  22.   }
  23. }

El código que puse anteriormente es correcto (o al menos, eso creo porque he usado más C++ que C). Lo he compilado (completando el código ya que falta incluir la librería, declarar el método main y return 0) y ha compilado perfectamente. Lo he ejecutado y el resultado que ha mostrado es el correcto.
Si y No.

En el estándar de facto de C (ISO C90) y C++ solo se puede indicar el numero de elementos de un array mediante una constante entera mayor que cero.

En el caso del nuevo estándar de C (ISO C99) si es posible pero este no tiene, ni de lejos, el soporte que si tiene C90.

Un saludo