Mostrando entradas con la etiqueta capicua. Mostrar todas las entradas
Mostrando entradas con la etiqueta capicua. Mostrar todas las entradas

jueves, 12 de enero de 2012

Ejercicio 12 Estructuras simples de datos.

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:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | GreenGeeks Review