Autor
|
Tema: como trabajar con una matriz poco densa o hueca? (Leído 5,170 veces)
|
razler
Desconectado
Mensajes: 17
|
hola , necesito realizar las operaciones basicas como insertar por fila,por columna,eliminar, apartir de un vector que tiene los valores de una matriz sin tomar en cuenta los ceros, este es una parte de mi algoritmo lo que hago es primero leo una matriz cualqiera, luego paso los valores que no sean ceros(si esque los hay), a un vector, a partir del vector, lo miestro, como si fuera una matriz. Lo que quiero es con el vector creado, insertar, eliminar, por filia y columna void leermatriz(int x[MAX][MAX],int *dimf,int *dimc) { int i,j,m,n,val; printf("\n\tIngresar el numero de filas: "); fflush(stdin); scanf("%d",&m); printf("\n\tIngresar el numero de columnas: "); scanf("%d",&n); printf("\n\tIngresar datos:\n"); if(m<MAX&&n<MAX){ for(i=0;i<m;){ for(j=0;j<n;){ printf("\n\tM[%d][%d]: ",i+1,j+1); scanf("%d",&val); x[i][j]=val; j=j+1; } i=i+1; } *dimf=m; *dimc=n; }else{ printf("\n\tDimension fuera de rango"); } } void crearvector(matriz mx[MAX],int *dim,int x[MAX][MAX],int dimf,int dimc) { int i,j,k,n; n=dimf*dimc; *dim=n; if(*dim>=0&&*dim<MAX){ k=0; for(i=0;i<dimf;i++){ for(j=0;j<dimc;j++){ if(x[i][j]!=0){ mx[k].fila=i; mx[k].columna=j; mx[k].valor=x[i][j]; k=k+1; } } } *dim=k; }else{ printf("\n\tfuera de rango"); } } void mostrarvector(matriz mx[MAX],int dimf,int dimc) { int i,j,k=0; for(i=0;i<dimf;i++){ for(j=0;j<dimc;j++){ if(i==mx[k].fila&&j==mx[k].columna){ printf("\t%d",mx[k].valor); k=k+1; }else{ printf("\t%d",0); } } printf("\n"); } } he intentado insertar en el vector, pero me salen algunos ceros ,em algunos casos y cuando quiero insertar columna peor tengo que realizar esto apartir de un verctor que optimize la matriz es decir que ni acepte ceros.
|
|
« Última modificación: 5 Julio 2010, 05:16 am por razler »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
No queda nada claro que es lo que quieres hacer.
Una pregunta, en las funciones crearvector y mostrarvector, ¿estas pasando un vector de matrices para guardar en cada una de ellas un solo valor?
Si no explicas mejor lo que quieres hacer creo que poco te podremos ayudar.
¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
razler
Desconectado
Mensajes: 17
|
lo que hago es primero leo una matriz cualqiera, luego paso los valores que no sean ceros(si esque los hay), a un vector, a partir del vector, lo miestro, como si fuera una matriz. Lo que quiero es con el vector creado, insertar, eliminar, por filia y columna hracias por su respuesta
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
Bueno, ahora nos hace falta saber la definicion del tipo matriz, porque a decir verdad, ver un vector de tipo matriz la verdad es que confunde bastante.
¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
MIG80
Desconectado
Mensajes: 38
|
Hola razler, bueno cuando dices "insertar" asumo que deseas sustituir todos los valores de una fila o columna de una matriz. Si ese es el caso, lo más sencillo seria convertir el vector de nuevo en una matriz, efectuar las operaciones de inserción en esa matriz y luego convertirla de nuevo en su representación optimizada de vector.
Saludos.
|
|
|
En línea
|
|
|
|
|
|