Program Pzim;
Uses crt;
const tam=30;
type cad = record
nome: string;
mat: integer;
n1,n2,media: real;
end;
var
aluno: array [1..tam] of cad;
i,X:integer;
op: real;
procedure Enter;
begin
writeln; writeln;
write('Pressione [ENTER] Para Voltar Pro Menu.');
readln;
end;
procedure cadastro;
var i: integer;
begin
i:=0;
op:=1;
while (i <= tam) and (op=1) do
begin
i:= i + 1;
write('Nome: ');
readln(aluno.nome);
write('Matricula: ');
readln(aluno.mat);
write('Nota 1: ');
readln(aluno.n1);
write('Nota 2: ');
readln(aluno.n2);
aluno.media:= (aluno.n1 + aluno.n2)/2;
write('Deseja cadastrar outro aluno? Aperte 1 para sim');
readln(op);
end;
Enter;
end;
procedure troca(p1,p2:integer);
var aux:cad;
begin
aux := aluno[p1];
aluno[p1] := aluno[p2];
aluno[p2] := aux;
end;
procedure ordenar;
var i, j: integer; aux: real;
begin
for i:= 1 to tam-1 do
for j:= 1 to tam-i do
if ( aluno[j].mat > aluno[j+1].mat ) then
troca(j,j+1);
end;
procedure ObtemX;
begin
clrscr;
writeln('Informe o numero a ser pesquisado.');
write('X : ');
readln(X);
end;
procedure sequencial;
var encontrou:boolean;
begin
ObtemX;
encontrou:= false;
i:=1;
while (i<=tam) and (not(encontrou)) do
begin
if (aluno.mat = X) then
begin
encontrou:= true;
end
else
i:= i+1;
end;
if (encontrou = true) then
begin
writeln('O elemento ',X,'foi encontrado na posição',i);
end
else
writeln('O elemento ',X,'não foi encontrado na lista.');
Enter;
end;
procedure binaria;
var Meio, Inicio, Fim: integer;
Achou: boolean;
begin
ordenar;
ObtemX;
Achou := false; Inicio := 1; Fim := tam;
while (Inicio <= Fim) and (not(Achou)) do
begin
Meio := (Inicio + Fim) div 2;
if aluno[Meio].mat = X then
Achou := true
else
if aluno[Meio].mat > X then
Fim := Meio - 1
else
Inicio := Meio + 1;
end;
writeln;
if Achou then
writeln('Este elemento existe no conjunto na posicao ', Meio)
else
writeln('Este elemento não existe no conjunto !');
Enter;
end;
procedure busca;
var op2:integer;
begin
clrscr;
writeln('1. Busca Binária');
writeln('2. Busca Sequencial');
write('Selecione uma opção: ');
readln(op2);
case op2 of
1: binaria;
2: sequencial;
else
writeln('outro');
readkey;
end;
end;
procedure imprimir;
begin
for i := 1 to tam do
begin
writeln('====================');
writeln('Nome: ',aluno.nome);
writeln('Matrícula: ', aluno.mat);
writeln('Nota 1: ', aluno.n1);
writeln('Nota 2: ', aluno.n2);
writeln('Média: ', aluno.media);
end;
Enter;
end;
procedure menu_principal;
var op1:integer;
begin
repeat
clrscr;
writeln('1. Cadastrar alunos');
writeln('2. Ordenar dados dos alunos');
writeln('3. Buscar alunos');
writeln('4. Imprimir dados de todos os alunos');
writeln('5. Sair');
write('Selecione uma opção: ');
readln(op1);
case op1 of
1: cadastro;
2:ordenar;
3:busca;
4:imprimir;
end;
until op1=5;
writeln('FIM DO PROGRAMA');
for i := 1 to tam do
begin
writeln('====================');
writeln('Nome: ',aluno.nome);
writeln('Matrícula: ', aluno.mat);
writeln('Nota 1: ', aluno.n1);
writeln('Nota 2: ', aluno.n2);
writeln('Média: ', aluno.media);
end;
Enter;
end;
Begin
menu_principal;
End.
não imprimiu certo o que eu escrevi, alguém pode me ajudar... sou iniciante... muito obrigado...