[C con Clase] Sacar elementos repetidos de un vector.

Davidson, Steven srd4121 en njit.edu
Jue Jun 5 16:26:43 CEST 2014


Hola Ali,

2014-06-04 21:46 GMT-04:00 Ali Rincon <alrincon1963 en hotmail.com>:

> Hola a todos. Tengo un problema con el siguiente código el cual saca los
> elementos repetidos de un  vector introducido por teclado. El asunto es que
> cuando le introduzco la secuencia de números: 0 8 9 10 11 12 13 14 36 37,
> me dice que se repite 1 numero y me muestra el vector final sin el numero
> 8. Con otra combinaciones que comiencen por 0 (sin repetir ningún numero)
> me dice nuevamente que se repite 1 numero y me saca el 0 del vector final.
> No veo donde puede estar el error que estoy cometiendo. Si alguien me
> pudiera ayudar, le agradecería altamente. El código es el siguiente:
>
>
Veamos el código fuente.

#include <stdio.h>
>
> int main(void)
> {
>

[CORTE]

    repetidos=0;
>     for (i=0; i<10; i++)
>     {
>         cont=0;
>         num=v_original[i];
>         v_aux[j]=num;
>         j++;
>         for(k=0; k<10; k++)
>         {
>             if (v_aux[k]==num )
>

Al comienzo, esto va a ser problemático porque 'v_aux' no contiene valores
deseados, excepto el primero, pero este bucle recorre todos los elementos
del array, aunque contengan basura. Esto implica un comportamiento
aleatorio y seguramente indeseado.

                cont++;
>         }
>         if(cont==1)
>         {
>             v_final[z]=num;
>             z++;
>         }
>         else
>         {
>             repetidos++;
>         }
>

José te ha comentado los problemas de esta sentencia 'if/else'.


Aconsejo rediseñar la lógica de este programa. Si no puedes cambiar el
orden de los valores en el array, entonces tienes que comprobar cada valor
con cada otro valor; o sea, una búsqueda exhaustiva. Por ejemplo,

0 comparado con,
8 9 10 11 12 13 14 36 37

si no hay repetidos, entonces pasamos al siguiente elemento:

8 comparado con,
9 10 11 12 13 14 36 37

y así sucesivamente.


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140605/04be9a0e/attachment.html>


Más información sobre la lista de distribución Cconclase