Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/01/2016, 16:38
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: ¿Cómo puedo contar cuantos números se repiten en un Array?

¿C o C++?

En cualquier caso, si el rango de números es acotado (de 0 a 10 o de 0 a 100 por ejemplo), puedes crearte un array con el mismo número de elementos que el rango posible de números... la idea es utilizar cada una de esas posiciones para almacenar el número de repeticiones de cada número.

El siguiente paso es inicializar todas las posiciones del array a 0 para evitar resultados raros. Tras esto recorremos nuestro array (el original) y para cada número que nos encontramos incrementamos en uno la posición correspondiente de nuestro array de repeticiones, es decir:

Código C:
Ver original
  1. repeticiones[array_original[i]]++;

Donde repeticiones es el array donde vamos almacenando las repeticiones y array_original es el array donde tienes tus números.

Finalmente recorres el array de las repeticiones y te quedas con el valor más alto y el más bajo.

Para conocer cada uno de estos datos necesitas dos variables (una para almacenar el número de repeticiones y otra para conocer el número asociado a las repeticiones dadas), aunque también puedes hacerlo con únicamente una variable (almacena el número de repeticiones y después buscas en el array de repeticiones a ver qué número tiene las repeticiones dadas).

Para calcular el valor más alto lo ideal es inicializar la variable a 0, para el valor más alto tienes dos opciones (o pones un número muy alto procurando no pasarte del rango de la variable o bien usas los límites dados en limits.h. Después iteras sobre todo el array de repeticiones y compruebas si las repeticiones dadas son mayores que el máximo que has encontrado hasta entonces o menores que el mínimo... si es así actualizas la variable y listo:

Código C:
Ver original
  1. // INT_MAX se encuentra en limits.h
  2. int min_rep = INT_MAX;
  3. int max_rep = 0;
  4. int min_num = -1;
  5. int max_num = -1;
  6.  
  7. for( int i=0; i<tam_array; i++)
  8. {
  9.   if( repeticiones[i]<min_rep )
  10.   {
  11.     min_rep = repeticiones[i];
  12.     min_num = i;
  13.   }  
  14.  
  15.   if( repeticiones[i]>max_rep )
  16.   {
  17.     max_rep = repeticiones[i];
  18.     max_num = i;
  19. }

Y ya está, ya conoces el número máximo y el mínimo de repeticiones así como los números asociados.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.