Programa Menu Inicial

Faça um programa que apresente um menu de escolha para os três problemas anteriores e permita que o usuário escolha qual operação deseja realizar. O menu deve ter a opção de encerrar o programa  e, antes de sair, deve exibir uma  mensagem dizendo quantas vezes cada problema foi executado naquela sessão.


program MenuInicial;
USES CRT, DOS;
var opc: char;
cont_programa_1, cont_programa_2, cont_programa_3 : real;




//VARIAVEIS DO PROGRAMA 1
 hh, mm, minutos_totais_compromisso, minutos_totais_sistema :  integer;
dia_compromisso: char;
tempo, dia_compromisso_ext: string;
hora,min,seg,cen_seg: word;
diferenca_minutos: integer;
hh_convertidas, mm_convertidas: integer;


 //VARIAVEIS DO PROGRAMA 2
 n,k, quadrado_aux, aux, guardanumero : integer;




//VARIAVEIS DO PROGRAMA 3
Numero1,Numero2,Divisor,Resto1,Resto2,MDC: integer;


begin


opc:='1';
cont_programa_1:=0;
cont_programa_2:=0;
cont_programa_3:=0;






while (opc<>'4') do


begin
        writeln ('');
        writeln ('');
writeln ('>> 1§ trabalho de AED I');
writeln ('');
writeln ('######### MENU INICIAL #########');
writeln ('#   Digite a opcao desejada:   #');
writeln ('#                              #');
writeln ('# 1 para PROGRAMA COMPROMISSOS #');
writeln ('# 2 para CAPICUA               #');
writeln ('# 3 para MDC                   #');
        writeln ('# 4 para encerrar o programa   #');
        writeln ('#                              #');
        writeln ('################################');
readln (opc);




case (opc) of


'1':
begin




cont_programa_1:=cont_programa_1+1;

REPEAT
Writeln ('**********COMPROMISSO**********');
Writeln ('Qual o dia do seu compromisso?');
Writeln ('');
Writeln ('Digite:');
Writeln ('H - para HOJE');
Writeln ('A - para AMANHA');
Write ('Sua escolha: ');
Readln (dia_compromisso);


//VERIFICACAO DO DIA, DEIXANDO MAIUSCULO
If (dia_compromisso='h') then
dia_compromisso:='H'


else if (dia_compromisso='a') then
dia_compromisso := 'A';


Until (dia_compromisso='H') or (dia_compromisso='A');


if (dia_compromisso='A') then
dia_compromisso_ext:='AMANHA'
else if (dia_compromisso='H') then
dia_compromisso_ext:='HOJE';


Writeln('');
Writeln('***HORARIO DO COMPROMISSO DE ',dia_compromisso_ext,' ***');
Writeln ('HORA');
Readln(hh);
writeln ('MINUTOS DO COMPROMISSO');
Readln (mm);




minutos_totais_compromisso:=hh*60+mm;




GETTIME(hora, min, seg, cen_seg); //HORA ATUAL DO SISTEMA


hora:=hora*60;
minutos_totais_sistema:=hora+min;


diferenca_minutos:=(minutos_totais_compromisso)-(minutos_totais_sistema);


if dia_compromisso='H' then
begin


hh_convertidas:=diferenca_minutos DIV 60;
mm_convertidas:= diferenca_minutos MOD 60;


if diferenca_minutos<0 then
writeln ('Voce se atrasou para o compromisso! Ele iniciou ha ',hh_convertidas*(-1),':', mm_convertidas*(-1),' horas')

else if diferenca_minutos>0 then
writeln ('Esteja preparado! O seu compromisso inicia daqui ', hh_convertidas,':', mm_convertidas,' horas')

else writeln('Seu compromisso comeca agora!');


end;




if dia_compromisso='A' then
begin


if (minutos_totais_compromisso>=0) and (minutos_totais_compromisso<=299) then
tempo:='MADRUGADA' else
if (minutos_totais_compromisso>=300) and (minutos_totais_compromisso<=719)  then
tempo:='MANHA' else
if (minutos_totais_compromisso>=720) and (minutos_totais_compromisso<=1079) then
tempo:='TARDE' else
if (minutos_totais_compromisso>=1080) and (minutos_totais_compromisso<=1439) then
tempo:='NOITE';


writeln ('Amanha de ', tempo, ' voce tem um compromisso agendado para as ', hh,':',mm);


end;








  
end;


'2':
begin
cont_programa_2:=(cont_programa_2)+1;
                writeln ('');
writeln ('_____ NUMEROS CAPICUAS E QUE SAO QUADRADOS PERFEITOS ____');
writeln ('');


for n:=1 to 100 do
begin

quadrado_aux:=n*n;




for k:=1 to 10001 do
begin


aux := k;
GuardaNumero := 0;


while (aux <> 0) do
begin


GuardaNumero := GuardaNumero *10 +aux mod 10;
aux := aux div 10;


if (GuardaNumero  = k) then

begin
if (GuardaNumero = quadrado_aux) then
write (quadrado_aux, ' - ');
end;


end;


end;


end;








end;




 '3':


 begin


cont_programa_3:=(cont_programa_3)+1;


Writeln('#########################');
Writeln('MAXIMO DIVISOR COMUM');


REPEAT
  WRITE('Digite o primeiro numero (Maior que ZERO) ');
  READLN(Numero1);
UNTIL Numero1>0;


REPEAT
  WRITE('Digite o segundo numero (Maior que ZERO) ');
  READLN(Numero2);
UNTIL Numero2>0;
IF Numero2>Numero1 THEN
divisor:=Numero1
ELSE Divisor:=Numero2;


REPEAT
  Resto1:=Numero1 MOD divisor;
  Resto2:=Numero2 MOD divisor;
  IF (resto1=0) AND (resto2=0) THEN BEGIN
 MDC:=Divisor;
 Divisor:=1
END;
  divisor:=divisor-1
UNTIL divisor=0;
WRITELN('O Maximo Divisor Comum entre ',Numero1,' e ',Numero2,' ‚ ',MDC);








END;
  end;


end;


        writeln ('');
        writeln ('######################################');
writeln ('# O programa 1 foi executado', cont_programa_1:2:0, ' vezes #');
writeln ('# O programa 2 foi executado', cont_programa_2:2:0, ' vezes #');
writeln ('# O programa 3 foi executado', cont_programa_3:2:0, ' vezes #');
        writeln ('######################################');
        writeln ('');
        writeln ('Tecle ENTER para fechar');
        readln;


end.