Valores repetidos en un arreglo en C

Iniciado por RGT, 31 Marzo 2015, 00:37 AM

0 Miembros y 1 Visitante están viendo este tema.

RGT

Ejemplo: Si el arreglo original es 8 4 8 5 4, entonces el arreglo se transformará a: 8 4 -1 5 -1 y se devolverá como cantidad de
repeticiones 2.

Código (cpp) [Seleccionar]
//Declaración de variables
   int liN, liContador, laiArreglo[10];

   //Entrada de datos
   do
   {
       printf("Cantidad de componentes del arreglo: ");
       scanf("%d", &liN);

       if (liN <= 0)
           printf("\n\tError!, debe ingresar un valor mayor que 0.\n\n");
   } while (liN <= 0);

   for (liContador = 0; liContador < liN; liContador++)
   {
       do
       {
           printf("Valor #%d: ", liContador + 1);
           scanf("%d", &laiArreglo[liContador]);

           if (laiArreglo[liContador] < 0)
               printf("\n\tError!, debe ingresar un valor mayor que 0.\n\n");
       } while (laiArreglo[liContador] < 0);
   }

   //Procesamiento
   int liContador1, liContador2;

   for (liContador1 = 0; liContador1 < liN - 1; liContador1++)
   {
       for (liContador2 = liContador1 + 1; liContador2 < liN; liContador2++)
       {
           if (laiArreglo[liContador2] == laiArreglo[liContador1])
               laiArreglo[liContador2] = -1;
       }
   }

//Salida de datos
   printf("\nResultado: ");

   for (liContador = 0; liContador < liN; liContador++)
   {
       printf("%d", laiArreglo[liContador]);

       if (liContador < liN - 1)
           printf(", ");
   }




Como pueden ver, no logro hacerlo, estoy vuelto loco y ya no se que hacer :(

Mod: Código resaltado con etiquetas GeSHi para que sea más visible

engel lex

no entiendo que es lo que no funciona? lo veo bien hecho y sin errores (más allá de hacer un arreglo fijo y "limitarlo" por variable)

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

RGT

Hola.

Asumiendo que ingresamos estos datos: 8 4 8 5 4, el resultado debe ser 8 4 -1 5 -1.
O sea, si se encuentra un valor repetido, se le reemplaza por -1.

8 4 8 5 4
8 4 -1 5 -1

y mi código no lo hace, algo estoy haciendo mal.
No sé que modificaciones hacerle, estoy en blanco, podrias ayudarme?.

engel lex

a mi me funciona así sin ningún cambio :s

creo que deberías hacer tu la prueba de nuevo



en tu imagen pusiste 8, 4, 5, 8, 4 y el resultado fue 8, 4, 5, -1, -1 que está bien
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.