Programación General > Pascal
Desencriptar clave
aguila3000:
Bueno usando pilas y colas el algoritmo seria mas o meno asi :
--- Código: Pascal --- PROCEDURE encriptar (VAR palabra:string) Var Pila:TPila; Cola:TCola; Car:Char; i:Integer; sacarpila:boolean; aux:string;Begin sacarpila:=false; i:=1; While (i<length(palabra)) do Begin if Not(palabra[i] in ['a','e','i','o','u']) then Cola.Meter(palabra[i]) else Begin While (palabra[i] in ['a','e','i','o','u']) do Begin Pila.Meter(palabra[i]); i:=i+1 End; sacarpila:=true; i:=i-1 End; if sacarpila then Begin While Not(Pila.EsVacia) do Begin car:=Pila.Sacar; Cola.Meter(car) End; sacarpila:=false End; i:=i+1 End; While Not(Cola.EsVacia) do aux:=aux+Cola.Sacar; palabra:=aux;End;
Estoy asumiendo que TPila y TCola, son Clases y contiene los métodos Sacar,Meter y EsVacia.
En caso estes usando Procedmientos y funciones y no clases entonces debes hacer los cambios pertinentes.
El procedimiente se puede resumir en el siguient enunciado :
Recorrer todas las letras en palabra, cuando una letra es una consonate entonces lo colocas en la cola, y cuando son vocales loc colocas en la pila, ni bien termines de colocar las letras en la pila los sacas de la pila para colocarlas en la cola, y el proceso se repite hasta terminar con la palabra.
Espero te ayude en algo.
suerte
m0skit0:
aguila3000, lolita23 tiene bien el código. No se trata de volver a hacerlo, sino si es correcto de esa manera (que es lo que pregunta). Y lo es. El tuyo es más enrevesado y más lento, aunque usa menos memoria en pila. Échale un vistazo a la recursividad que usa lolita23, que personalmente creo que es la mejor manera de hacer estos problemas.
Saludos
lolita23:
Muchas gracias a todos por vuestra ayuda, finalmente opte por mi solución xq me resulta mas fácil y mas sencilla.
Graciasss.
Navegación
[*] Página Anterior
Ir a la versión completa