Programa Compromissos



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.