• Jueves 18 de Abril de 2024, 21:33

Autor Tema:  Desencriptar clave  (Leído 2671 veces)

lolita23

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Desencriptar clave
« en: Jueves 9 de Julio de 2009, 18:38 »
0
Bueno pues lo que tengo que hacer ahora es lo siguiente:
Me dan una palabra y lo que tengo que hacer es invertir cuando hay 2 vocales o mas seguidas.
Por ejemplo:
puerta-->peurta
Esto es lo que he hecho, si alguien me lo pudiera revisar....
MUCHAS GRACIAS.

Código: Pascal
  1.  
  2. PROCEDURE encriptar (VAR palabra:string)
  3. VAR
  4.    pila:tPila;
  5.    cola:tCola;
  6.    Car1,Car2:Char;
  7.    I:Integer;
  8. BEGIN
  9.     CrearPila(pila);
  10.     CrearCola(cola);
  11.     FOR (I:=1 to length(palabra)) DO
  12.     Begin
  13.        IF (palabra[I] Not in ['a','e','i','o','u']) THEN
  14.            MeterEnCola(palabra[I],cola);
  15.        ELSE
  16.            Apilar(palabra[I],pila);
  17.    REPEAT
  18.         SacarDeCola(Car1,cola);
  19.         Desapilar(Car2,pila);
  20.    UNTIL (EsVacia(cola) OR EsVacia(Pila)=True)
  21. END;{fin}
  22.  
  23.  

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Desencriptar clave
« Respuesta #1 en: Martes 21 de Julio de 2009, 23:06 »
0
por que con una pila... si es mucho mas fácil teniendo un string al que podes acceder a traves de índices? :unsure:


m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Desencriptar clave
« Respuesta #2 en: Jueves 23 de Julio de 2009, 13:06 »
0
A mí me parece perfecto que use una pila.

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Desencriptar clave
« Respuesta #3 en: Jueves 23 de Julio de 2009, 17:12 »
0
yo no digo que no este perfecto... pero el poco codigo que puso no me dice lo suficiente para afirmar que sea lo mejor o lo peor el uso de una pila :o


lolita23

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Desencriptar clave
« Respuesta #4 en: Viernes 24 de Julio de 2009, 00:28 »
0
Bueno, pero en caso de usar la pila esta bien como lo hice???

aguila3000

  • Miembro activo
  • **
  • Mensajes: 26
  • Nacionalidad: pe
    • Ver Perfil
    • http://www.conoce3000.com
Re: Desencriptar clave
« Respuesta #5 en: Martes 4 de Agosto de 2009, 00:48 »
0
Bueno usando pilas y colas el algoritmo seria mas o meno asi :

Código: Pascal
  1.  
  2. PROCEDURE encriptar (VAR palabra:string)
  3.   Var
  4.     Pila:TPila;
  5.     Cola:TCola;
  6.     Car:Char;
  7.     i:Integer;
  8.     sacarpila:boolean;
  9.     aux:string;
  10. Begin
  11.   sacarpila:=false;
  12.   i:=1;
  13.    While (i<length(palabra)) do
  14.       Begin
  15.          if Not(palabra[i] in ['a','e','i','o','u'])
  16.             then  Cola.Meter(palabra[i])
  17.             else Begin
  18.                       While (palabra[i] in  ['a','e','i','o','u']) do
  19.                          Begin
  20.                              Pila.Meter(palabra[i]);
  21.                              i:=i+1
  22.                          End;
  23.                        sacarpila:=true;
  24.                        i:=i-1
  25.                    End;
  26.          if sacarpila then
  27.              Begin
  28.                  While Not(Pila.EsVacia) do
  29.                       Begin
  30.                          car:=Pila.Sacar;
  31.                          Cola.Meter(car)
  32.                       End;
  33.                  sacarpila:=false
  34.              End;
  35.          i:=i+1
  36.       End;
  37.    While Not(Cola.EsVacia) do aux:=aux+Cola.Sacar;
  38.    palabra:=aux;
  39. End
  40.  
  41.  

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

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Desencriptar clave
« Respuesta #6 en: Martes 4 de Agosto de 2009, 13:45 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Desencriptar clave
« Respuesta #7 en: Martes 4 de Agosto de 2009, 13:55 »
0
Muchas gracias a todos por vuestra ayuda, finalmente opte por mi solución xq me resulta mas fácil y mas sencilla.
Graciasss.