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:
jueves, 12 de enero de 2012
Ejercicio 24 Estructuras Simples de Datos
Suscribirse a:
Enviar comentarios (Atom)
y el registro variante ? xD
ResponderEliminarquizá leí demasiado rápido el enunciado jaja
ResponderEliminar