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.