Faça um programa que solicite ao usuário se ele tem um compromisso hoje (H) ou amanhã (A). Depois disso, o programa deve perguntar o horário do compromisso no formato (hh:mm). Após receber estes dados, o programa, usando a data do sistema, deverá calcular a diferença de horário entre a hora atual e a hora do compromisso. Se ele já ocorreu, deve calcular o atraso. Se ainda não ocorreu, deve calcular quantas horasainda faltam para o compromisso. As mensagens deverão ser exibidas da seguinte forma:
• Se o compromisso for hoje e a hora indicada for anterior a hora atual: Você se atrasou para o compromisso! Ele iniciou há hh:mm.
• Se o compromisso for hoje e ainda não ocorreu: Esteja preparado! O seu compromisso inicia daqui hh:mm.
• Se o compromisso for amanhã: Amanhã de {madrugada, manhã, tarde ou noite}, você tem um compromisso agendado para as hh:mm! (Neste caso, para exibir manhã, tarde ou noite, considere 00:00 às 04:59 - madrugada, 05:00 às 11:59 – manhã, 12:00 às 17:59 – tarde, 18:00 – 23:59 – noite)
program compromissos;
USES CRT, DOS;
var hh, mm, minutos_totais_compromisso, minutos_totais_sistema : integer;
dia_compromisso, opc_final: char;
tempo, dia_compromisso_ext: string;
hora,min,seg,cen_seg: word; //variaveis da hora do sistema
diferenca_minutos: integer;
hh_convertidas, mm_convertidas: integer;
begin
REPEAT
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;
Repeat
writeln ('');
writeln ('#########################');
writeln ('Deseja executar novamente?');
writeln ('Digite: 1 para SIM | 2 para NAO');
readln (opc_final);
Until (opc_final='2') OR (opc_final='1');
Until opc_final= '2';
end.