Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/11/2010, 15:34
AlanChavez
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 11 meses
Puntos: 95
Respuesta: Duda con matriz

NxN significa que es una matriz cuadrada.
n x n, son filas y columnas

Puedes utilizar memoria dinamica, depende con que programes
si programas en C, tienes que usar malloc y free
si programas en C++, tienes que usar new y delete.


Para hacer una matriz dinámica, lo mas sencillo es que utilices un concepto llamado row major order.
Veras la memoria de tu computadora, es sequencial. Osea que para almacenar una matriz, en realidad lo almacena como un array, y utiliza una formula para acceder a cualquier elemento en la matriz alojada en la memoria.


printf("Tamaño de la matriz");
scanf("%d",&n);

int *MatrizDinamica;
MatrizDinamica = (int *)malloc(n*n*sizeof(int));

int row, column,offset;
row = n;
column = n;

offset = row*NUMCOLS + column

MatrizDinamica[offset]

Es mas o menos lo que buscas.


El codigo tiene errores, NUMCOLS, es el numero de columnas que tiene tu matriz, mientras que row y column, son los indices de la posicion que quieres tener.

Por ejemplo, si tienes una Matriz de 3x3, y quieres accesar la posicion M[1,1]
entonces tu offset quedaría:
offset = 1*3 + 1
offset = 4

Eso quiere decir, que el elemento en la posicion 1,1 en un array ocuparia el espacio 4, y asi tienes una matriz dinamica.