Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/01/2016, 02:00
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: ¿Cómo puedo contar cuantos números se repiten en un Array?

Cita:
Iniciado por sanandresm Ver Mensaje
No hare todo el trabajo te di la base con eso puedes contar cual se repite mas y cual menos
Lo siento si suena mal pero... no has ayudado en nada. Has puesto el código que te ha dado la gana que no solo no resuelve la duda del usuario sino que ni tan siquiera se le aproxima.

Por otro lado piensa que te contesto yo, @eferion, y no @themarcoscabrera97, que es quien hizo inicialmente la pregunta.

@themarcoscabrera97 pregunta cómo conocer el número con más repeticiones y el número con menos repeticiones de un array... y tu código únicamente es capaz de decir si un número se repite o no... además que, para el ejemplo que has puesto, te dice 2 veces que se repite el número 2 y 3 veces que se repite el número 0... habría estado bien que, al menos, te sacase un resultado por número.

A modo de bonus piensa que últimamente has realizado bastantes preguntas en este foro... si respondes lo que te da la gana y te quedas tan tranquila luego no te quejes si no te respondemos lo que tu esperas...

Estoy de acuerdo en que no se trata de hacerle la tarea a nadie. Pero si se trata de orientar y dar consejos útiles. Si pones un código que no hace absolutamente nada de lo que te han pedido al menos indícalo en el mensaje e indica igualmente los motivos. Hay que intentar que un novato no se vuelva loco tratando de entender un código que no conoce solo para descubrir que además no hace lo que él espera.

Bonus 2: Por qué seguimos declarando todas las variables al inicio de la función? Los nuevos estándares de C (C99 y C11) ya permiten declarar variables dentro de los bucles... lo que permite tener código más legible. También estaría bien que usases el tipo bool, definido en stdbool.h para almacenar datos booleanos, la legibilidad de un código fuente es algo importantísimo.

Una versión que hace exactamente lo mismo que la tuya pero con ligeros cambios:
  • Uso de bool para booleanos.
  • Cada variable declarada en su ámbito correcto.
  • Uso de punteros en vez de índices.
  • Solo hay un printf.

Código C:
Ver original
  1. #include <stdbool.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.     int a[7] = {3, 2, 0, 2, 0, 1, 0};
  7.     const int* end = a + sizeof(a)/sizeof(int);
  8.     const char* no = " no";
  9.     const char* si = "";
  10.    
  11.     for(int* ptr=a; ptr<end; ++ptr)
  12.     {
  13.         bool repeated = false;
  14.         for( int* ptr2=a; ptr2<end && !repeated; ++ptr2)
  15.           repeated = (*ptr==*ptr2 && ptr!=ptr2);
  16.  
  17.         char* option = (repeated)? si : no;
  18.  
  19.         printf("El numero %i%s se repite\n", *ptr, option );
  20.     }
  21.     return 0;
  22. }

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.