Mostrando entradas con la etiqueta ejercicio 24. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejercicio 24. Mostrar todas las entradas

jueves, 12 de enero de 2012

Ejercicio 24 Estructuras Simples de Datos

24. Plantee e implemente un programa en PASCAL que permita calcular la superficie de un cuadrado, de un círculo y de un triángulo, según seleccione el usuario, almacenando los datos sobre las figuras en un registro variante.


PROGRAM ejercicio_24 (input,output);
(*Ejercicio número 24 dl boletín de Estructuras simples de Datos*)
CONST
     pi = 3.1415;
TYPE
     TCadena = string (20);
     TRAreas = RECORD
                     Figura:TCadena;
                     Lado:real;
                     Altura:real;
                     Radio:real;
                     Area:real;
               END;
     TAAreas = ARRAY [1..3] OF TRAreas;
(************************************************************************)    
PROCEDURE menu;
          VAR
             Opcion:char;
             Areas:TAAreas;
          (**************************************************************)
          PROCEDURE cuadrado;
                    BEGIN
                         WITH Areas[1] DO
                              BEGIN
                              Write('Escribe el lado: ');
                              Readln(Lado);
                              Figura:='CUADRADO';
                              Area:=Lado*Lado;
                              END;
                    END;
          (**************************************************************)
          PROCEDURE triangulo;
                    BEGIN
                         WITH Areas[2] DO
                              BEGIN
                              Write('Escribe la base: ');
                              Readln(lado);
                              Write('Escribe la altura: ');
                              Readln(Altura);
                              Figura:='TRIANGULO';
                              Area:=(Lado*Altura)/2;
                              END;
                    END;
          (****************************************************************)        
          PROCEDURE circulo;
                    BEGIN
                         WITH Areas[3] DO
                              BEGIN
                              Write('Escribe el radio: ');
                              Readln(Radio);
                              Figura:='CIRCULO';
                              Area:=Radio*Radio*pi;
                              END;
                    END;
          (******************************************************************)        
          PROCEDURE menu2;
                    VAR
                       Opcion2:char;
                    BEGIN
                         REPEAT
                         Writeln('[C] Cuadrado ');
                         Writeln('[T] Triangulo');
                         Writeln('[O] Circulo  ');
                         Writeln('[V] Volver   ');
                         Readln(Opcion2);
                         Writeln;
                         CASE Opcion2 OF
                              'C','c': cuadrado;
                              'T','t': triangulo;
                              'O','o': circulo;
                              'V','v': Writeln('Volviendo al menu anterior...');
                         OTHERWISE
                              Writeln('Opcion no valida, por favor elija otra...');
                         END;
                         UNTIL (Opcion2='v') OR (Opcion2='V');
                         END;
          (*****************************************************************)              
          PROCEDURE mostrar_c;
                    BEGIN
                         WITH Areas[1] DO
                              BEGIN
                              Writeln('Figura: ',Figura);
                              Writeln('Lado: ',Lado:8:4);
                              Writeln('Area: ',Area:8:4);
                              END;
                    END;
          (*******************************************************************)
          PROCEDURE mostrar_o;
                    BEGIN
                         WITH Areas[3] DO
                              BEGIN
                              Writeln('Figura: ',Figura);
                              Writeln('Radio: ',Radio:8:4);
                              Writeln('Area: ',Area:8:4);
                              END;
                    END;
          (*******************************************************************)
          PROCEDURE mostrar_t;
                    BEGIN
                         WITH Areas[2] DO
                              BEGIN
                              Writeln('Figura: ',Figura);
                              Writeln('Lado: ',Lado:8:4);
                              Writeln('Altura: ',Altura:8:4);
                              Writeln('Area: ',Area:8:4);
                              END;
                    END;        
          (******************************************************************)
          PROCEDURE menu3;
                    VAR
                       Opcion3:char;
                    BEGIN
                         REPEAT
                         Writeln('[C] Mostrar datos del cuadrado ');
                         Writeln('[O] Mostrar datos del circulo  ');
                         Writeln('[T] Mostrar datos del triangulo');
                         Writeln('[M] Mostrar todos los datos    ');
                         Writeln('[V] Volver al menu anterior    ');
                         Readln(Opcion3);
                         CASE Opcion3 OF
                              'C','c': mostrar_c;
                              'O','o': mostrar_o;
                              'T','t': mostrar_t;
                              'M','m': BEGIN
                                       mostrar_c;
                                       mostrar_t;
                                       mostrar_o;
                                       END;
                              'V','v': Writeln('Volviendo al menu anterior...');
                         OTHERWISE
                                  Writeln('Opcion no valida, por favor elija otra...');
                         END;
                         UNTIL (Opcion3 = 'V') OR (Opcion3 = 'v');
                    END;
          (****************************************************************)
          BEGIN
               REPEAT
               Writeln('[I] insertar datos desde teclado');
               Writeln('[M] Mostrar datos por pantalla'  );
               Writeln('[S] Salir del programa');
               Readln(Opcion);
               CASE Opcion OF
                    'I','i':menu2;
                    'M','m':menu3;
                    'S','s':Writeln('Saliendo del programa...');
               OTHERWISE
                    Writeln('Opcion no valida, por favor elija otra...');
               END;
               UNTIL (Opcion = 'S') OR (Opcion = 's');
          END;
(****************************************************************************)
BEGIN
      menu;
END.

Ejemplo de ejecucion:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

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