Fala pessoal eu sou o Patch, durante meu programa de fim de ano de pascal eu me encontrei com um erro estranho no código, ele rodava o menu apenas uma vez e depois o mesmo saia do programa por razao nenhuma, e sim o meu código estava correto, o programa saia sem os requerimentos do until serem preenchidos segue o código a seguir:
Alguém me explica o por que do erro, eu comentei a parte que faltava pro código funcionar corretamente.
program trabestevan;
type
ficha = record
nome,Genero,cpf : string;
idade,qtdEnd,qtdTel: integer;
endereco:array [1..3] of string;
telefone:array [1..3] of string;
end;
var
Pessoa : array [1..100] of ficha;
finish,sel,margem,escolha,Psel,qtdEnd,qtdTel : integer;
begin
margem:=0;
finish:=1; // SEM ESTA LINHA NO CODIGO O PROGRAMA EXECUTAVA A OPCAO 1 E SAIA SOZINHO IGNORANDO O REPEAT AI EU COLOQUEI ISSO E RESOLVEU MAS POR QUE?
repeat
writeln('Bem Vindo ao Programa de Agenda');
writeln('Menu :');
writeln('1 - Cadastrar Nova Pessoa');
writeln('2 -Cadastrar Endereço Extra');
writeln('0 - Sair do Programa');
readln(sel);
while (sel < 0) or (sel > 2) do
begin
writeln('Menu :');
writeln('1 - Cadastrar Nova Pessoa');
writeln('2 -Cadastrar Endereço Extra');
writeln('0 - Sair do Programa');
readln(sel);
end;
if (sel = 1) then
begin
margem:= margem + 1;
writeln('Insira o Nome da nova Pessoa a ser Cadastrada :');
readln(Pessoa[margem].nome);
writeln('Insira o Endereço :');
Pessoa[margem].qtdEnd:=1;
qtdEnd:=1;
qtdTel:=1;
readln(Pessoa[margem].endereco[qtdEnd]);
Pessoa[margem].qtdTel:=1;
writeln('Insira o Telefone, "(xx) xxxxx-xxxx "');
readln(Pessoa[margem].telefone[qtdTel]);
writeln('Insira seu CPF, "xxx.xxx.xxx-xx"');
readln(Pessoa[margem].cpf);
writeln('Insira a Idade');
readln(Pessoa[margem].idade);
writeln('Selecione o Sexo');
writeln('1- Masculino');
writeln('2- Feminino');
readln(escolha);
while (escolha <=0) or (escolha > 2) do
begin
writeln('Selecione o Sexo');
writeln('1- Masculino');
writeln('2- Feminino');
readln(escolha);
end;
if (escolha = 1) then
begin
Pessoa[margem].genero:= 'Masculino';
end
else
if (escolha = 2) then
begin
Pessoa[margem].genero:='Feminino';
end;
end
else
if (sel = 2) then
begin
writeln('Número de Pessoas Cadastradas: ',margem);
writeln('Insira a Posição Numérica da pessoa que irá receber o Novo Endereço :');
readln(Psel);
while (Psel < 1) or (Psel > margem) do
begin
writeln('Numero não existe no vetor');
writeln('Insira a Posição Numérica da pessoa que irá receber o Novo Endereço :');
readln(Psel);
end;
qtdEnd:= Pessoa[Psel].qtdEnd;
if (qtdEnd = 3) then
begin
writeln('Esta Pessoa já Possui o Máximo de Endereços no Servidor');
end
else
if (qtdEnd < 3) then
begin
qtdEnd:= qtdEnd + 1;
Pessoa[Psel].qtdEnd:= qtdEnd;
writeln('Insira o Novo Endereço');
readln(Pessoa[Psel].endereco[qtdEnd]);
end;
end
else
if (sel = 3) then
begin
writeln('Insira o Numéro de Usuário que terá o Novo Telefone Adicionado a Conta');
readln(Psel);
while (Psel < 0) or (Psel > margem) do
begin
writeln('Pessoa Não consta em Nosso Vetor');
writeln('Insira o Numéro de Usuário que terá o Novo Telefone Adicionado a Conta');
readln(Psel);
end;
qtdTel:= Pessoa[Psel].qtdTel;
if (qtdTel = 3) then
begin
writeln('Usuário Já Possui o Máximo de Telefones');
end
else
if (qtdTel < 3) then
begin
qtdTel:= qtdTel + 1;
Pessoa[Psel].qtdTel:= qtdTel;
writeln('Insira o Novo Número de Telefone');
readln(Pessoa[Psel].telefone[qtdTel]);
end;
end
else
if (sel = 0) then
begin
finish:=0;
end;
writeln('Pressione qualquer tecla pra continuar');
readln();
until (finish=0);
end.