Hallar el número de repeticiones de los elementos en un arreglo Imprimir
Escrito por adrianvaca   
Martes, 22 de Marzo de 2011 23:31

Suponiendo que tenemos un arreglo definido de la siguiente forma:

#define MAX 10
typedef int TaNumeros[MAX];



La siguiente función muestra el número de repeticiones de cada uno de los elementos del arreglo:

void Mostrar(TaNumeros aNumeros, int eTotal) {
   TaNumeros aCopia, aRep;
   int i, j, k, eElementos;

   /* Saca copia del arreglo */
   for(i=0;i < eTotal; i++)
      aCopia[ i ]=aNumeros[ i ];

   /* Saca numeros distintos */
   eElementos = eTotal;
   for(i=0;i < eElementos;i++)
   {
      for(j=i+1; j < eElementos;j++)
      {
      /* Si encuentra numero repetido */
      if(aCopia[ i ]==aCopia[ j ])
      {
          /* Recorre una posicion elementos posteriores */
          for(k=j+1;k < eElementos;k++)
          aCopia[k-1]=aCopia[k];

          eElementos--;
          j--;
      }
      }
   }

   /* Halla repeticiones de cada numero distinto */
   for(i=0; i < eElementos; i++)
       aRep[ i ] = 0;
   for(i=0; i < eElementos; i++)
       for(j=0;j < eTotal;j++)
      if(aCopia[ i ]==aNumeros[j])
         aRep[ i ]++;

   /* Imprime elementos del arreglo original */
   printf("\n\nArreglo original: ");
   for(i=0; i < eTotal; i++)
   {
       printf("%d ", aNumeros[ i ]);
   }

   /* Imprime numeros y las veces que aparece */
   printf("\n\nElemento -> Apariciones");
   for(i=0; i < eElementos; i++)
   {
       printf("\n%d -> %d", aCopia[ i ], aRep[ i ]);
   }


   getch();
}



El código fuente completo en el siguiente enlace:

repeticiones en un arreglo

 
Otros artículos