[ Foro de Pascal ]

eliminar

11-Apr-2014 16:18
Invitado (fer97)
5 Respuestas

hola buen dia, agradecido siempre con el profesor nacho y con ese compañero luis que en ocasiones me ha sabido ayudar.
queria preguntar por una parte de un programa que estoy realizando y que no se como hacer la verdad sea.

se trata de eliminar los numeros repetidos en un vector ,porejemplo
si el vector es:
1   2   3   1   5   6   1   7   34  90

el resultado seria:  2    3    5     6    7    34   90

es que no se si quiza utilizando un vector auxiliar o si mejor sea recorrer el vector con un solo for , que me recorra  hasta la  longitud -1 del vector e ir comparando con el siguiente indice y si los dos elementos son iguales pues eliminarlos, he leido la teoria del curso respecto a eliminacion de elementos en vectores pero es que en este caso debo eliminar todos los repetidos en el vector no dejando la primera ocurrencia y eliminar los demas a el, por favor pido su ayuda estoy bloqueado y me urge esta parte pues es como dije una parte de un trabajo, mil gracias por lo que me ayuden


11-Apr-2014 19:03
Nacho Cabanes (+32)

Primero piensa en la lógica que quieres implementar, para poder convertirla a Pascal:

- Para cada letra
--- Comprobar si está repetida
--- Eliminar si lo está

Que se podría detallar un poco más

- Para cada letra
--- Recorrer todas las posteriores para ver si vuelve a aparecer
--- Si vuelve a aparecer:
------ Eliminar posición actual
------ Recorrer todas las posteriores y eliminar las que sean como la actual

Y eso ya se puede convertir a Pascal:

- El "para" se convertiría en un "while" (hasta que hayas mirado todas), porque un "for" en Pascal no puede tener un límite cambiante.

- Recorrer las siguiente es un "for"

- Puedes usar un booleano para anotar si vuelve a aparecer

- Sabes cómo eliminar un dato


11-Apr-2014 20:20
Invitado (fer97)

profesor, hola. el problema que tengo es al eliminar los que se repiten pues el vector cambiaria de dimension, podrias orientarme por favor.gracias


11-Apr-2014 22:37
Luis Torres (+12)

Creo que si se utiliza un ciclo for para recorrer las siguientes, al encontrar otro valor igual deberías eliminarlo y al hacer esto modificarías el límite del for, cosa que no debe hacerse.
Saludos.


11-Apr-2014 23:08
Invitado (fer97)

hola comàñero luis, gracias por estar siempre aqui y ayudarme, porfavor ayudame es que ahora estoy confundido pues el profesor me habla de for y tu me dices que no, por supuesto de seguro cada uno tendra razon , pero si pudieras plasmarmelo quiza lo entenderia mas y saldria de la confucion, gracias a los dos inmensamente.


11-Apr-2014 23:21
Luis Torres (+12)

Para eliminar sí se podría usar un for. Por ejemplo, si quiero eliminar el elemento en la posición PosInicial, se haría de la siguiente forma:

 
for i:=PosInicial to PosFinal-1 do
   Vector[i]:= Vector[i+1];
 


Al hacer esto, deberás decrementar en uno la variable que guarda el número de elementos del vector.

Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)