MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación > Webmasters - Diseño Web - Programación - Diseño gráfico

Como crear una matriz dinámica (array[n][n]) en C

(1/1)

Espejo:
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.

halo:
Haz que durante la ejecución del programa le des a la variable N el valor que te de la gana. :wink:

BuHo:
Si la quieres reservar en memoria dinamica prueba con esto:


--- Código: ---
#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;
}
--- Fin del código ---


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.

BuHo:
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:

jirho:
...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...

Navegación

[0] Índice de Mensajes

Ir a la versión completa