Programa para armazenar dados de candidatos que estão sendo entrevistados para uma vaga de garçom. Implementação sem o uso dos conceitos de TAD e UNIT.
Program PAgenda; Uses CRT; Const MAXREG = 100; Type TReg = record RG : string[15]; Nome : string[40]; Endereco : string[60]; end; TAgenda = record VReg : array [1..MAXREG] of TReg; NReg : 0..MAXREG; end; Var Agenda : TAgenda; Procedure InicializaAg; begin Agenda.NReg := 0; end; Function PesquisaAg(RG : string) : integer; Var i : integer; achou : boolean; begin achou := FALSE; i := 1; while (not achou) and (i <= Agenda.NReg) do begin achou := (Agenda.VReg[i].RG = RG); i := i + 1; end; if achou then PesquisaAg := (i-1) else PesquisaAg := -1; end; Procedure InsereAg; Var flag : char; RegAux : TReg; begin flag := 's'; while ((flag = 's') or (flag = 'S')) and (Agenda.NReg < MAXREG) do begin clrscr; writeln; writeln; write('Entre com o RG: '); readln(RegAux.RG); if (PesquisaAg(RegAux.RG) > 0) then begin write('Erro! Registro ja existe.'); readln; end else begin write('Entre com o Nome: '); readln(RegAux.Nome); write('Entre com o Endereco: '); readln(RegAux.Endereco); Agenda.NReg := Agenda.NReg + 1; Agenda.VReg[Agenda.NReg] := RegAux; end; writeln; writeln; write('Deseja incluir outro registro (S/N)? '); readln(flag); end; if (flag = 's') or (flag = 'S') then begin write('Erro! Espaco para inclusao esgotado.'); readln; end end; Procedure RemoveAg; Var flag1, flag2 : char; aux : integer; RegAux : TReg; begin flag1 := 's'; while ((flag1 = 's') or (flag1 = 'S')) and (Agenda.NReg > 0) do begin clrscr; writeln; writeln; write('Entre com o RG: '); readln(RegAux.RG); aux := PesquisaAg(RegAux.RG); if (aux < 0) then begin write('Erro! Registro nao existe.'); readln; end else begin writeln; writeln; writeln('Dados do registro a ser removido:'); writeln('RG : ', Agenda.VReg[aux].RG); writeln('Nome : ', Agenda.VReg[aux].Nome); writeln('Endereco : ', Agenda.VReg[aux].Endereco); writeln; writeln; write('Confirma remocao (S/N)? '); readln(flag2); if (flag2 = 's') or (flag2 = 'S') then begin Agenda.VReg[aux] := Agenda.VReg[Agenda.NReg]; Agenda.NReg := Agenda.NReg - 1; end end; writeln; writeln; write('Deseja remover outro registro (S/N)? '); readln(flag1); end; if (flag1 = 's') or (flag1 = 'S') then begin write('Agenda Vazia!'); readln; end end; Procedure AlteraAg; Var flag : char; RegAux : TReg; aux : integer; begin if (Agenda.NReg < 1) then writeln('Agenda Vazia!') else begin flag := 's'; while (flag = 's') or (flag = 'S') do begin clrscr; writeln; writeln; write('Entre com o RG: '); readln(RegAux.RG); aux := PesquisaAg(RegAux.RG); if (aux < 0) then begin write('Erro! Registro nao existe.'); readln; end else begin writeln; writeln; writeln('Dados do registro a ser alterado:'); writeln('RG : ', Agenda.VReg[aux].RG); writeln('Nome : ', Agenda.VReg[aux].Nome); writeln('Endereco : ', Agenda.VReg[aux].Endereco); writeln; writeln; writeln('Entre com novos dados. Tecle <<enter>> para manter os atuais.'); write('Entre com o novo Nome: '); readln(RegAux.Nome); if RegAux.Nome = '' then RegAux.Nome := Agenda.VReg[aux].Nome; write('Entre com o novo Endereco: '); readln(RegAux.Endereco); if RegAux.Endereco = '' then RegAux.Endereco := Agenda.VReg[aux].Endereco; Agenda.VReg[aux] := RegAux; end; writeln; writeln; write('Deseja alterar outro registro (S/N)? '); readln(flag); end; end; end; Var flag : byte; begin InicializaAg; flag := 1; while (flag <> 4) do begin clrscr; writeln;writeln; writeln('Agenda de Enderecos'); writeln('====== == ========='); writeln; writeln('1 - Incluir'); writeln('2 - Excluir'); writeln('3 - Alterar'); writeln('4 - Sair'); writeln; write('Entre com a opcao desejada: '); readln(flag); case flag of 1 : InsereAg; 2 : RemoveAg; 3 : AlteraAg; end; end; end.