Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda con matriz

Estas en el tema de Duda con matriz en el foro de C/C++ en Foros del Web. Hola, como va? tengo una duda con el tema de matrices, les pongo un ejercicio simple, no quiero su resolucion. Dada una matriz de N ...
  #1 (permalink)  
Antiguo 14/11/2010, 13:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Duda con matriz

Hola, como va? tengo una duda con el tema de matrices, les pongo un ejercicio simple, no quiero su resolucion. Dada una matriz de N x N, devolver la suma los elementos de su diagonal principal. Mi pregunta es que significa N x N, xq no tengo su tamaño, tambien quisiera sacarme la duda de lo q es la diagonal principal e inversa. Espero su ayuda, para ir resolviendo este tipo de ejercicios. Muchas gracias. Alan.
  #2 (permalink)  
Antiguo 14/11/2010, 14:44
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 5 meses
Puntos: 95
Respuesta: Duda con matriz

NxN significa que es una matriz cuadrada.
n x n, son filas y columnas
  #3 (permalink)  
Antiguo 14/11/2010, 14:56
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Duda con matriz

La idea del ejecicio es que ese N puede variar. Osea es una variable. No tiene una dimension fija.
Los elementos pueden ser nombrados a travez del numero de fila y columna. Los elementons que se encuentran en la diagonal principal son los que tiene igual numero de fila y columna. Por ejemplo el 1-1,2-2,etc.
  #4 (permalink)  
Antiguo 14/11/2010, 15:34
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 5 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.

Etiquetas: matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:34.