program agenda_de_compromissos; uses crt; const NMES=12; NDIA=31; NHORA=24; type compromisso = string[10]; atividade = array [1..NMES,1..NDIA,1..NHORA] of compromisso; procedure insere(var a:atividade); var m,d,h:integer; resp:char; begin clrscr; writeln('Insere um compromisso'); writeln; write('Entre com o mes, dia e hora: '); readln(m,d,h); if (m<=NMES) and (d<=NDIA) and (h<=NHORA) then begin if (a[m,d,h]<>'*') then begin writeln('>>> Compromisso j  existente...'); write('Deseja realmente alterar (s/n)?'); readln(resp); if (resp='s') or (resp='S') then begin write('Entre com o compromisso: '); readln(a[m,d,h]); end; end else begin write('Entre com o compromisso: '); readln(a[m,d,h]); end; end else writeln('>>> Erro: impossivel agendar o compromisso nesta data'); writeln; writeln('=> Pressione uma tecla para voltar ao menu...'); readkey; end; procedure consulta(a:atividade); var m,d,h:integer; begin clrscr; writeln('Consulta um compromisso'); writeln; write('Entre com o mes, dia e hora: '); readln(m,d,h); if (m<=NMES) and (d<=NDIA) and (h<=NHORA) then begin writeln; writeln('Compromisso agendado: '); if a[m,d,h]<>'*' then writeln(a[m,d,h]) else writeln('>>> Sem compromissos agendados nesta data <<<'); end else writeln('>>> Erro: esta data nao pode ser consultada'); writeln; writeln('=> Pressione uma tecla para voltar ao menu...'); readkey; end; function le_opcao:integer; var opcao:integer; begin clrscr; writeln('Agenda de Compromissos'); writeln; writeln('1. Inserir um novo compromisso'); writeln('2. Consultar um compromisso'); writeln('3. Sair do programa'); writeln; writeln('Entre com a sua opcao: ' ); readln(opcao); le_opcao:=opcao; end; procedure inicializa(var a:atividade); var m,d,h:integer; begin for m:=1 to NMES do for d:=1 to NDIA do for h:=1 to NHORA do a[m,d,h]:='*'; end; var agenda:atividade; op:integer; sair:boolean; begin sair:=false; inicializa(agenda); repeat op:=le_opcao; if op=1 then insere(agenda); if op=2 then consulta(agenda); if op>=3 then sair:=true; until sair; readln; end.