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:
jueves, 12 de enero de 2012
Ejercicio 12 Estructuras simples de datos.
Suscribirse a:
Enviar comentarios (Atom)
buen programa.yo estuve haciendo el mismo pero en recursiva,pero no consigo que ejecute bien xD
ResponderEliminarEsto no mira si es capicúa para todos los elementos del array sólo coge uno por uno. Cómo podemos hacer para que analice si son capicúa todos los elementos del array de una vez?
ResponderEliminar