Título: Array elementos repetidos Publicado por: LGG en 5 Mayo 2015, 16:44 pm ¿¿¿Como se hace para que un array formado a partir de otros, y ordenado de forma creciente, no tenga ningún valor repetido???
El ejercicio es el siguiente: "Escribir un programa al que se le dé como entrada dos arrays de enteros ordenados de forma creciente, y devuelva como salida un array ordenado de forma creciente formado por los elementos de las entradas y sin incluir los elementos repetidos." Éste es el código que tengo hasta ahora, pero se me repiten los valores: Código: #include <iostream> Si saben cómo, me haríais un gran favor! Gracias LGG Título: Re: Array elementos repetidos Publicado por: eferion en 5 Mayo 2015, 17:32 pm Tienes varias opciones. La primera se vale únicamente de tu código, el
1. Paso a paso: Como los vectores originales están ordenados, puedes rellenar el vector final con el siguiente algoritmo: 1. Partes de dos vectores iniciales, V1 y V2 y de un vector final V3. 2. Inicializas los 'i' y 'j' a 0. 'i' iterará sobre el vector 'V1' y 'j' sobre el vector 'V2' 3. Si el elemento V1[ i ] < V2[ j ]: 3.1. añades V1[ i ] a V3 3.2. incrementas 'i' 3.3. Verificas que 'i' < n1: 3.3.1. Si se cumple saltas al punto 3. 3.3.2. Si no se cumple, añades todos los elementos que falten en V2 y sales 4. En caso contrario, puede suceder que V1[ i ] == V2[ j ] o que V1[ i ] > V2[ j ]. A efectos prácticos las operaciones a realizar son las mismas. Básicamente repite los pasos comentados a partir de 3.1 pero para V2[ j ] y n2 2. usa el contenedor "set". Este contenedor tiene dos propiedades fundamentales: * Sus elementos están siempre ordenados * No admite duplicados Después de almacenar todos los elementos en el set, vuelcas su contenido al vector resultado y... magia!!! Código
Notas finales: Acostúmbrate a usar nombres que signifiquen algo: n1, n2, n3, V1, V2, ... no dicen gran cosa y no ayudan demasiado en la lectura del código. No tengas miedo de usar nombres más largos... lo acabarás agradeciendo. |