• Jueves 2 de Mayo de 2024, 02:36

Autor Tema:  Problema!! matriz Dinamica!!. C  (Leído 1354 veces)

NICOLASBLUES

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema!! matriz Dinamica!!. C
« en: Lunes 10 de Mayo de 2010, 18:13 »
0
Hola gente!!!

bueno les cuento que estoy ante un gran dilema esto es asi:

mediante una matriz estatica de enteros de 20 x 20 hay que generar dinamicamente otra matriz cuyos elementos son todos aquellos que son unicos en la matriz estatica de 20 x 20, es decir si en la matriz estatica tenemos:
 pos[0][0]=1  
 pos[0][1]=1
 pos[0][2]=23

en la dinamica tendremos pos[0][0]=23

ya que 23 es unico en la matriz


el algoritmo responde bien hace exactamente eso pero me quedo muy confuso si alguien purde sugerir alguna manera de arreglarlo o de encararlo por otro lado seria grandioso !!


 
Código: C
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5.  
  6. void gen_matriz (int** nuevo, int matriz[20] [20])
  7.  
  8. {
  9.     int j, k, y;
  10.     int dup;
  11.     int num_elem[20];      
  12.  
  13.     nuevo = (int**) calloc(20, sizeof(int*));
  14.  
  15.  
  16.     for (y = 0; y < 20; y++)
  17.     {      
  18.         num_elem[y] = 0;
  19.  
  20.         for (k = 0; k < 20; k++)
  21.         {
  22.             dup = 0;
  23.             j = 0;      
  24.             while ((j < 20) && !dup)    
  25.             {          
  26.  
  27.               if (k != j)
  28.               {
  29.                 dup = matriz[y][k] == matriz[y][j];            
  30.                 printf ("y=%i %i %in",y, j, dup);
  31.               }
  32.               j++;
  33.             }
  34.             printf ("dup %in", dup);
  35.             if (!dup)
  36.             {                        
  37.  
  38.                 num_elem[y]++;
  39.                 if (nuevo[y] == NULL)
  40.                   nuevo[y] = (int*) malloc(sizeof (int));
  41.                 else
  42.                   nuevo[y] = (int*) realloc(nuevo[y], num_elem[y] * sizeof (int));
  43.  
  44.                 int indice = num_elem[y] - 1;                  
  45.                 nuevo[y][indice] = matriz[y][k];                
  46.                 printf (" posicion %i %i : %in", y, k, nuevo [y] [indice]);                    
  47.  
  48.             }      
  49.         }  
  50.  
  51.     }
  52.  
  53.     for(y = 0; y < 20; y++)
  54.         for(k = 0; k < num_elem[y]; k++)
  55.             printf("nuevo[%i][%i] = %in", y, k, nuevo[y][k]);
  56. }
  57.  
  58.  

   
esta un poco desprolijo espero que se entienda

espero que me puedan ayudar saludos!!!