palindro1.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Ejercicio tomado en el Ex\'amen Final del 30/7/2001:
dado un string verificar si es un palindromo.
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ Ejemplos:
Menem
Neuquen
De La Rua
Gonzalez
Dabale arroz a la zorra, el abad.
Salida:
"Menem" : SI es un palindromo!!
"De La Rua": NO es un palindromo!!
"Gonzalez" : NO es un palindromo!!
"Dabale arroz a la zorra, el abad.": SI es un palindromo!!
}
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{$ Id: palindro1.pas 2002/04/10 7:40 jdelia Exp jdelia $}
program p_palindro1;
uses u_pilapc, u_colapc;
type
pila = pilapc ;
cola = colapc ;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function ES_PALINDROMO (s: string): boolean ;
var
P : pila ;
C : cola ;
o : tipo_elemento ;
j : integer;
siga : boolean ;
begin
C.ANULA;
P.ANULA;
for j := 1 to length (s) do begin
o := s [j];
{ convierte letras a minusculas }
if (o >= 'A') and (o <= 'Z') then begin
o := chr (ord (o) - ord ('A') + ord ('a'));
end ; {if}
{ pasan solo letras }
if (o >= 'a') and (o <= 'z') then begin
C.PONE (o);
P.METE (o);
end ; {if}
end ; {j}
siga := true ;
while not (C.VACIA) and (siga) do begin
write ('frente: ', C.FRENTE, ' ');
writeln ('tope : ', P.TOPE);
if ( C.FRENTE <> P.TOPE ) then
siga := false
else begin
C.QUITA;
P.SACA;
end; {if}
end ; {while}
ES_PALINDROMO := ( C.VACIA = true );
end ;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
s : string;
begin
writeln;
write ('string: ');
readln (s);
if ( ES_PALINDROMO (s) ) then
writeln ('SI es un palindromo')
else begin
writeln ('NO es un palindromo');
end ; {if}
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.