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

José de Paz cplusplus en intelnet.net.gt
Jue Jun 5 16:06:07 CEST 2014


Hola buen día,


 Analiza la siguiente porción, puede ser que alli esté el error lógico:


for(k=0; k<10; k++) 
{ 
    if (v_aux[k]==num ) 
     cont++;                           /* ¿CUAL ES EL USO DE CONTADOR?
*/
} 


if(cont==1)                         /*  ESTO QUIERE DECIR QUE SI
CONTADOR TIENE ALGUN OTRO VALOR, INCLUSIVE 0 ENTONCES ¿HAY REPETIDO? */
{ 
    v_final[z]=num; 
    z++; 
} 
else 
{ 
   repetidos++; 
} 
} 
printf("La cantidad de numeros repetidos son: %d",repetidos); 

 
__________________________
           José de Paz
 
@_jdepaz
 
http://unixescuintla.blogspot.com
 
De Guatemala en Medellín
Technical Architect en Tata Consultancy Services

<-----Mensaje original----->

 	 	From: Ali Rincon [alrincon1963 en hotmail.com]
Sent: 4/6/2014 8:46:02 PM
To: cconclase en listas.conclase.net
Subject: [C con Clase] Sacar elementos repetidos de un vector. 

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 
_______________________________________________ 
Lista de correo Cconclase Cconclase en listas.conclase.net 
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.ne
t 
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ	
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140605/aef6418f/attachment.html>


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