Program media_alunos;
uses crt;
type
Ponteiro = ^ TAluno;
TLista = record
prim : Ponteiro;
ultm : Ponteiro;
end;
TAluno = record
matricula : integer;
media : REAL;
prox : Ponteiro;
end;
procedure iniciaLista(var list : TLista);
begin
list.prim := nil;
list.ultm := nil;
end;
var
lista : TLista;
n1, n2, n3 : REAL;
aluno : TAluno;
opcao : Char;
procedure cadastrar();
var
inicio,anda,paux:Ponteiro;
opcaoc:Char;
begin
iniciaLista(lista);
inicio:=nil;
anda:=nil;
repeat
if inicio=nil
then begin
new(inicio);
writeln('Digite a matricula:');
readln(inicio^.matricula);
writeln('Digite a nota 1:');
readln(n1);
writeln('Digite a nota 2:');
readln(n2);
writeln('Digite a nota 3:');
readln(n3);
inicio^.media:=n1+n2+n3/3;
inicio^.prox:=nil;
lista.prim:=inicio;
end
else begin
new(anda);
writeln('Digite a matricula');
readln(anda^.matricula);
writeln('Digite a nota 1:');
readln(n1);
writeln('Digite a nota 2:');
readln(n2);
writeln('Digite a nota 3:');
readln(n3);
anda^.media:=n1+n2+n3/3;
anda^.prox:=nil;
lista.prim:=anda;
end;
writeln('Deseja continuar? <s/n>');
readln(opcaoc);
until opcaoc='n';
end;
procedure pesquisar();
begin
end;
procedure mostrarAprovados();
begin
end;
procedure mostrarReprovados();
begin
end;
procedure mostrarProvaFinal();
begin
end;
procedure mostrarTodos();
begin
end;
procedure destruirLista(var inicio : Ponteiro);
begin
dispose(inicio);
writeln('Memória desalocada com sucesso!');
end;
begin
repeat
writeln;
writeln('1. Cadastrar Aluno 2. Pesquisar Aluno');
writeln('3. Mostrar Aprovados 4. Mostrar Reprovados');
writeln('5. Mostrar Prova Final 6. Mostrar Todos');
writeln('0. Sair');
writeln('Escolha a opção: ');
opcao := readkey;
case opcao of
'1': cadastrar;
'2': pesquisar;
'3': mostrarAprovados;
'4': mostrarReprovados;
'5': mostrarProvaFinal;
'6': mostrarTodos;
else
writeln('Opção Invalida !');
end;
until (opcao = '0');
writeln;
write('Destruindo a lista...');
destruirLista(lista.prim);
end.