-
[Problema] Meu Codigo
Bem queria pedir uma ajudinha para quem aí sacar de pascal porque to fazendo trabalho da faculdade código roda Blz mais entra num loop infernal que não consigo achar o erro se alguém puder me ajudar serei bem grato
Por favor, peço que não poste o código Digamos meu professor e um cara bem experto não tolera ajuda de fora mais ele mesmo não se disponibiliza para ajudar =( queria ajudinha de VCS
Lembre-se to 2 período ainda mau sai do Portugol ainda hauihauah espero que possa me ajudar =)
Tirei o arquivo porque Problema foi resolvido Obrigado
Imperyus Games
-
Olá! Bem vindo ao Fórum do ImperyusGames.
Analisei o seu código, mas não encontrei o problema citado. Queira por favor informar em qual parte do código está em Loop, e se há ainda outro problema.
Aguardo resposta!
-
Tipo assim quando voce rodar o Programa vera q ta normal mais faz assim
cadastra 2 usuarios depois coloca efetuar Matricula na hora q pedir numero do aluno coloca numero q vc nao cadastro
ai ele entra num LOOP sendo que era pra falar so aluno nao cadastrado mais loop nao e infinito ele para depois de um tempo
Traduzindo era para ele travar no else ou tornar a pedir o codigo certo novamente =)
Vlw p tentar me ajudar
-
Olá bom dia, como não programo em delphi não sei se poderei ajudar muito. Mas vamos lá:
Dica: no seu loop de pesquisa você deve observar o tamanho armazenado do array e ler pelo seu tamanho e não diretamente os 100. Creio que mesmo sem nada ele testará até chegar ao número. Outra dica: você deve fazer o esquema da leitura para efetuar assim que o programa encontrar o número da matrícula e não esperar até que ele a encontre. Pois pelo que imagino ser, o número da matrícula é única, sendo assim, você coloca no for para procurar até que ache, se achar ele sai do seu loop e faz o que tem que fazer. Agora se ele não encontrar dá mensagem e pede para informar um número válido.
Lembrando, NUNCA vi delphi na minha vida apenas li o código e acho que é isso que está deixando seu programa lento. Qualquer coisa é só postar ;)
-
Solução 1
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!
-
Nosssaaa
No coments nao tenho nem como agradecer ja tava loco com isso Muito Obrigado Mesmo
FMilioni= vlwwwwwwwwwww
LeeLeeSobieski= Obrigado
(obs: vo tirar o arquivo de Download para Evitar professor achar mais vlw mesmo)
Estarei comprando VIP Obrigado Mesmo me ajudarao vo retribuir o favor
-
FMilioni,
Fico muito satisfeito em ajudar nosso fórum com suas experiências...continue assim.
Tópico fechado = problema resolvido.