Programación General > Pascal

 Desencriptar clave

<< < (2/2)

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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa