Eliminar duplicados de un array
De Ejercicios
Enunciado
Diseñar un algoritmo que lea un vector desordenado A, compuesto de n enteros e imprima este vector en la misma secuencia, pero ignorando los valores duplicados que se encuentren en él. También se necesita saber el número de elementos que permanecen en él (m); por ejemplo, dado el vector siguiente
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 15 31 23 15 75 23 41 15 31 85
compuesto de 10 enteros, el vector comprimido que resulta estará formado por
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 15 31 23 75 41 85
con m = 6.
Soluciones
Diseño en pseudocódigo
ALGORITMO Duplicados ENTRADAS: v: ARRAY (1..n) DE ENTEROS (* vector con los duplicados *) n: ENTERO (* tamaño del vector v *) SALIDAS: w: ARRAY (1..k) DE ENTEROS (* vector sin duplicados *) k: ENTERO (* tamaño del vector w *) VARIABLES: i,j: ENTEROS enc:LOGICO INICIO w(1) <-- v(1) k <-- 1 PARA i<--2 HASTA n HACER (* Buscar valor en el vector sin duplicados*) j<--1 enc <-- FALSO MIENTRAS j<=k Y enc=FALSO HACER SI v(i)=w(j) ENTONCES enc <-- VERDAD SINO j <-- j+1 FIN_SI FIN_MIENTRAS (* Si no está en el array sin duplicados lo copia *) SI enc=FALSO ENTONCES k <-- k+1 w(k) <-- v(i) FIN_SI FIN_PARA FIN