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
Ir a la versión completa