elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como trabajar con una matriz poco densa o hueca?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como trabajar con una matriz poco densa o hueca?  (Leído 5,170 veces)
razler

Desconectado Desconectado

Mensajes: 17


Ver Perfil
como trabajar con una matriz poco densa o hueca?
« en: 5 Julio 2010, 04:45 am »

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





Código:
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 Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: como trabajar con una matriz poco densa o hueca?
« Respuesta #1 en: 5 Julio 2010, 05:06 am »

¡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 Desconectado

Mensajes: 17


Ver Perfil
Re: como trabajar con una matriz poco densa o hueca?
« Respuesta #2 en: 5 Julio 2010, 05:11 am »

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 Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: como trabajar con una matriz poco densa o hueca?
« Respuesta #3 en: 5 Julio 2010, 05:43 am »

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 Desconectado

Mensajes: 38



Ver Perfil
Re: como trabajar con una matriz poco densa o hueca?
« Respuesta #4 en: 5 Julio 2010, 20:25 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines