Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/03/2015, 18:43
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 2 meses
Puntos: 38
Respuesta: Valores repetidos en un arreglo en C

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main () {
  4.     int salir = 0;
  5.     int n = 0;
  6.     int numeros[] = {8, 4, 8, 5, 4};
  7.     int repeticiones = 0; //contador de repeticiones
  8.     int i, z;
  9.  
  10.     //Pasamos por cada casilla comparando con las demas.
  11.     for ( i = 0; i < sizeof ( numeros ) / sizeof ( numeros[0] ); i++ ) {
  12.         //Pasamos por alto comparaciones de casillas con un valor -1 ya que quiere decir que -1 es repetido y ya ha sido marcado.
  13.         if ( numeros[i] != -1 ) {
  14.             //comparamos cada casilla con todas las demas...
  15.             for ( z = 0; z < sizeof ( numeros ) / sizeof ( numeros[0] ); z++ ) {
  16.                 //...pero solo si no se trata de la misma casilla, ya que sabemos que se trata del mismo numero y no se puede comparar un numero con el mismo XD
  17.                 if ( i != z ){
  18.                     //Nos quedamos con el primer numero que no repita, los demas  que se repiten se modifican a -1 y se añaden +1 al contador.  
  19.                     if ( numeros[i] == numeros[z] ){
  20.                         numeros[z] = -1;
  21.                         repeticiones++;
  22.            
  23.            
  24.                     }
  25.                 }
  26.             }
  27.         }
  28.        
  29.     }
  30.    
  31.     //imprimimos arreglo modificado
  32.     for ( i = 0; i < sizeof ( numeros ) / sizeof ( numeros[0] ); i++ ) {
  33.         printf ("%d, ", numeros[i]);
  34.    
  35.     }
  36.     printf("Numero de repeticiones: %d\n\n", repeticiones );
  37.    
  38.     getchar();
  39.     return 0;
  40. }