[ Foro de Pascal ]
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
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
profesor, hola. el problema que tengo es al eliminar los que se repiten pues el vector cambiaria de dimension, podrias orientarme por favor.gracias
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.
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.
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.)