Olá!
Analisei o seu problema e encontrei 3 erros de início, mais estarei estudando mais o código. Mostrarei os 3 primeiros erros críticos.
Erro 1: Onde você está salvando ?
Código:
...
Write ('Numero do Aluno: ');
Readln (matricula[i].numero);
...
Descrição: Você está salvando a matríclula do aluno no matricula[i].numero. Mas, pense um pouco. Este i é igual o quê? Quanto ele vale? Você precisa definir onde salvá-lo.
Solução: Você terá que definir uma variável fixa, para a verificação. Como? Você declara um integer que pega o numero do usuario, dai, você compara com a da memoria.
Exemplo:
Código:
...
Write("Código do produto: ");
ReadLn(code);
for i = 1 to 15 do
begin
if code = produto[i].code then
begin
Write("Nome do Produto: ",produto[i].nome);
end
end;
...
Erro 2: Outro problema simples. Como so pode existir um ALUNO por REGISTRO, na hora que ele encontrar o registro, você para o LOOP do FOR. Como?
Exemplo:
Código:
...
Write("Código do produto: ");
ReadLn(code);
for i = 1 to 15 do
begin
if code = produto[i].code then
begin
Write("Nome do Produto: ",produto[i].nome);
break;
end
end;
...
Erro 3: Quando o usuario digita um numero de ALUNO invalido, aparece varias vezes: "Matricula Invalida".
Solução: Você pode definir para mostrar caso o i do laço FOR passe do 100. Assim, so exibirá uma mensagem de erro. Como?
Exemplo:
Código:
...
Write("Código do produto: ");
ReadLn(code);
for i = 1 to 15 do
begin
if code = produto[i].code then
begin
Write("Nome do Produto: ",produto[i].nome);
break;
end
else
begin
if i >= 15 then
begin
Write("Produto nao encontrado");
break;
end;
end;
end;
...
E é só isso. Caso tenha alguma dúvida e precise de mais alguma explicação, pode postar, serei pronto em ajudá-lo.
O seu código e onde está os erros:
Código:
...
Write ('Numero de Registro: ');
Readln (matricula[i].registro);
repeat
Write ('Numero do Aluno: ');
Readln (matricula[i].numero);
For i:= 1 to 100 do
begin
if(matricula[i].numero = aluno[i].matricula) then
begin
Writeln ('Nome: ',aluno[i].nome);
//Precisa inserir o break
end
Else
Begin
Writeln ('Matricula invalida');
//Precisa inserir o break
end;
end;
until (matricula[i].numero = aluno[i].Matricula);
...
Aguardo Resposta!