Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: Espejo en 12 de Julio de 2004, 12:06:08 pm

Título: Como crear una matriz dinámica (array[n][n]) en C
Publicado por: Espejo 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.
Título: Como crear una matriz dinámica (array[n][n]) en C
Publicado por: halo 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:
Título: Como crear una matriz dinámica (array[n][n]) en C
Publicado por: BuHo 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.
Título: Como crear una matriz dinámica (array[n][n]) en C
Publicado por: BuHo 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:
Título: Como crear una matriz dinámica (array[n][n]) en C
Publicado por: jirho 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...