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:

2 comentarios:

  1. buen programa.yo estuve haciendo el mismo pero en recursiva,pero no consigo que ejecute bien xD

    ResponderEliminar
  2. Esto 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

Twitter Delicious Facebook Digg Stumbleupon Favorites More

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