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

Ali Rincon alrincon1963 en hotmail.com
Jue Jun 5 03:46:02 CEST 2014


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:

#include <stdio.h>

int main(void)
{
    int v_original[10];
    int v_aux[10];
    int v_final[10];
    int cont,num,repetidos,i,j=0,k,z=0;

    for (i=0; i<10; i++)
    {
        printf("Introduce el valor del array incial %d: ", i+1);
        scanf("%d",&v_original[i]);
    }
    printf("\nv_original = ");
    for (i=0; i<10; i++)
    {
        printf("%d ",v_original[i]);
    }
    printf("\n\n");

    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 )
                cont++;
        }
        if(cont==1)
        {
            v_final[z]=num;
            z++;
        }
        else
        {
            repetidos++;
        }
    }
    printf("La cantidad de numeros repetidos son: %d",repetidos);
    printf("\n\n");

    printf("El vector simplificado es: \n");
    printf("\nv_final = ");
    for (i=0; i<z; i++)
    {
        printf ("%d ",v_final[i]);
    }
    printf("\n");

    return 0;
}

Utilizo CodeBlocks 10.05 para compilar. 

Agradecido,

Ali Rincon
Venezuela


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