12. Plantee e implemente una función en PASCAL que indique si un array de enteros es capicúa.
PROGRAM ejercicio_12 (input,output);
(*Ejercicio número doce del boletín de procedimientos y funciones.
No se utilizan acentos por la dificultad en la lectura y traducción*)
CONST
longitud = 30;
TYPE
TAnumero = ARRAY [1..longitud] OF integer;
VAR
Numerol:string(30);
Resultado:boolean;
Comp:boolean VALUE (FALSE);
PROCEDURE pedir_numero;
VAR
i:integer;
(*Numerol:string(30);*)
BEGIN
Write('Escribe el numero: ');
Readln(Numerol);
i:=1;
WHILE i<=length(Numerol) DO
BEGIN
CASE Numerol[i] OF
'0': Comp:=TRUE;
'1': Comp:=TRUE;
'2': Comp:=TRUE;
'3': Comp:=TRUE;
'4': Comp:=TRUE;
'5': Comp:=TRUE;
'6': Comp:=TRUE;
'7': Comp:=TRUE;
'8': Comp:=TRUE;
'9': Comp:=TRUE;
OTHERWISE
Comp:=FALSE;
i:=length(Numerol)+1;
END;
i:=i+1;
END;
END;
FUNCTION capicua (Numerol:string):boolean;
VAR
i:integer;
longitude:integer;
resul:boolean;
BEGIN
longitude:=length(Numerol);
FOR i:=1 TO longitude DO
BEGIN
IF Numerol[i] = Numerol[longitude] THEN
BEGIN
resul:=TRUE;
longitude:=longitude-1;
END
ELSE
BEGIN
resul:=FALSE;
longitude:=longitude-1;
END;
END;
capicua:=resul;
END;
BEGIN
REPEAT
pedir_numero;
IF Comp = TRUE THEN
BEGIN
resultado:=capicua(Numerol);
IF resultado = TRUE THEN
Writeln('El numero es capicua')
ELSE
Writeln('El numero no es capicua');
END
ELSE
Writeln('Tienes que escribir un numero!');
UNTIL Numerol[1] = '0';
END.
Ejemplo de ejecucion:


