Autor Tema: Como crear una matriz dinámica (array[n][n]) en C  (Leído 9435 veces)

Desconectado Espejo

  • Newbie
  • *
  • Mensajes: 1
Como crear una matriz dinámica (array[n][n]) en C
« en: 12 de Julio de 2004, 12:06:08 pm »
Tengo el gran problema de no saber como crear una matriz [n][n] en tiempo de ejecución del programa, ya que la dimensión n de la matriz debe de ser leida por teclado
He buscado en los manuales, pero solo en encontrado la orden:
 p=new int [n]; (que crea un array de una dimensión)

por lo visto esta función new no vale para varias dimensiones del array
  p=new int[n][n]; //da ERROR

Y necesito saber como puedo leer desde teclado un numero entero y posteriormente crear mi matriz durante la ejecución del programa, sin tener que recurrir a listas de punteros (ya que esta solución seria la mas laboriosa). Gracias.

Desconectado halo

  • Pro Member
  • ****
  • Mensajes: 541
Como crear una matriz dinámica (array[n][n]) en C
« Respuesta #1 en: 12 de Julio de 2004, 01:05:00 pm »
Haz que durante la ejecución del programa le des a la variable N el valor que te de la gana. :wink:
Condemnation , Tried , Here on the stand , With the book in my hand , And truth on my side
Accusations , Lies , Hand me my sentence , I'll show no repentance , I'll suffer with pride If for honesty , You want apologies , I don't sympathize...

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
Como crear una matriz dinámica (array[n][n]) en C
« Respuesta #2 en: 12 de Julio de 2004, 03:32:33 pm »
Si la quieres reservar en memoria dinamica prueba con esto:

Código: [Seleccionar]

#include <stdio.h>
#include <malloc.h>

typedef struct matrix  {
     int ** p;
}TMatrix;

int dim,i,j ;
TMatrix M;



int main()  {
//pedimos la dimension de la matriz y comprobamos que sea mayor que cero

do  {
  puts("Introduce la dimension de la matriz:  ");
  scanf("%d", &dim);
}while (dim<1);

//reservamos la memoria y comprobamos que lo haga correctamente

M.p=(int**) malloc (dim*sizeof(int *));

if (M.p == NULL) {
    puts("Error de memoria\n");
}

//vamos creando la matriz

for (i=0;i<dim;i++)  {
    M.p[i] = (int*) malloc (dim*sizeof(int));
     for (j=0; j<dim;j++)   {
                printf("Introduce el elemento [%d,%d] :  ", i+1, j+1 );
                scanf("%d",  &M.p [i][j]);
      }
}

//Ahora devolvemos por pantalla la matriz ordenada
for (i=0; i<dim; i++)  {
for (j=0; j<dim; j++)  {
     printf("%d  ", M.p[i][j]);
}
puts("\n");
}
return 0;
}


Si luego no necesitaras la matriz no te olvides de liberar memoria. Yo esto lo hice pensando en meterlo a una funcion y no liberaba hasta el final del programa, pero no se lo que tu necesitas.
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
Como crear una matriz dinámica (array[n][n]) en C
« Respuesta #3 en: 12 de Julio de 2004, 03:33:39 pm »
xD  xD xD

Acabo de leer aquello de los punteros pero... a mi no me parece nada laborioso, los punteros son nuestros amigos!!!  :twisted:  :twisted:
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
Como crear una matriz dinámica (array[n][n]) en C
« Respuesta #4 en: 23 de Julio de 2004, 09:53:09 pm »
...si que si Buho, per cuidado...aveces como los buenos amigos te hacen una que otra bromita... :lol: ...

...Espejo bienvenido...solo una pregunta si aun no sabes como leer un numero que es muy sencillo, como quieres crear una matriz dinamica y segun veo lo del new en objetos...no es que no se pueda, solo que deberia ser desde el principio no crees...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License