Hallar el número de repeticiones de los elementos en un arreglo |
|
|
|
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
|