Ir ao conteúdo
  • Cadastre-se

Ikaro Alef

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. As portas SATA da Asus P8H61-M Lx3 Rev 2.0 ficam muito perto do slot PCI então queria saber de quem tem essa placa-mãe, qual VGA usa e se cobre muito as portas SATA? To pensando em Pegar uma R7 260x, mas to em dúvida entre a da Sapphire e a PowerColor , ainda cogito a Gigabyte. Eu tinha uma Sapphire HD 7750 e cobria umas 2 portas SATA, mas o Cooler dessa 7750 não cobre toda a placa, ao contrario dessa Sapphire e da PowerColor.
  2. Estou com um vários problema na procedure pesquisa (linha 54), que compõe a opção 3 do "menu principal". Logo depois de pedir ao usuário a variável pes (serve para comparar com o registro nome do aluno), no readln(pes) esse read simplesmente não funciona. Ele lê (constatei isso colocando um write logo abaixo do read) mas fica voltando pedindo a variável e não sai do lugar, acho que fica em loop. Tirando o repeat ele entra como se a pes tivesse sido lida e pula o read. Eu sei que há várias coisas que podem ser melhoradas, mas no momento meu foco é a pesquisa, então, o que puderem melhorar nessa procedure, por favor me expliquem, principalmente na questão do repeat, da comparação das strings e na hora de dar uma mensagem de erro caso não encontre o que está sendo pesquisado (nesse caso, eu criei uma boolean find para que receba true caso encontra, e no final, se não encontrar, vai estar false e então é mostrada a mensagem de erro) pois ainda tenho muita dificuldade nisso. Ah, e se virem algo de errado ou que pode ser otimizado (com certeza há várias coisas) no resto do código, por favor também me expliquem. Mas no momento, o foco é essa procedure pesquisa mesmo. Obrigado desde já! Estou utilizando o Lazarus 1.0.14 no Windows 8.1 update 1. {Programa para receber alunos, notas e calcular suas medias, e armazenar em um arquivo.Com opções para recriar o arquivo, cadastrar um novo aluno, pesquisar a media pelo aluno e listar todos os alunos}{Ikaro Alef}{2014.1}program nota_alunos;{$APPTYPE CONSOLE}uses sysutils,crt;label Return, Fim;type Tdados_alunos = record nome: string[25]; //nome not1: real; //nota 1 not2: real; //nota 2 media:real; //media end;vararq: file of Tdados_alunos; //arquivoaluno: Tdados_alunos; // manipulação dos dadossel:integer; // seletor do menuprocedure ini_arquivo; //OPÇÃO 1 - procedimento para criar um novo arquivo begin clrscr; rewrite (arq); close(arq); writeln('Arquivo recriado com sucesso, pression Enter para voltar ao Menu anterior'); readKey; end;procedure novo_aluno; //OPÇÃO 2 - procedimento para introduzir novos alunos var i,j: integer; // contador begin clrscr; gotoxy(29,1);writeln('Cadastrar novos alunos'); writeln; seek (arq, FileSize(Arq)); //ir para a ultima posição do arquivo if IORESULT()<>0 then ReWrite(Arq); //NAO SEI O QUE É ISSO ESTAVA TESTANDO MAS NAO FEZ DIFERENÇA NENHUMA. DEIXEI PRA DESCOBRIR DEPOIS write('Quantos alunos deseja adicionar? (0 para nenhum): ');readln(j);// ler quantos alunos quer adicionar for i:= 1 to j do begin writeln; write('Digite o nome do aluno: '); readln(aluno.nome); //receber nome write('Digite a nota 1 de ',aluno.nome,': '); readln(aluno.not1); //receber nota 1 write('Digite a nota 2 de ',aluno.nome,': '); readln(aluno.not2); // receber nota 2 aluno.media:=(aluno.not1+aluno.not2)/2; // calcular media write(arq,aluno); //gravar no arquivo no disco writeln; end; if j>0 then writeln('Alunos cadastrados com sucesso. Pressione Enter para voltar ao Menu Principal') else if j=0 then writeln('Nenhum aluno cadastrado. Pressione Enter para voltar ao Menu Principal'); readkey; close(arq); end;procedure pesquisa; //OPÇÃO 3 - pesquisar no banco de dados var pes: string[25]; find: boolean; begin clrscr; gotoxy(29,1);writeln('Pesquisar Aluno'); writeln; reset(arq); repeat write('Digite o nome do aluno que deseja pesquisar: '); readln(pes); if uppercase(pes)='SAIR' then begin //comparar a pesquisa (EM MAIUSCULO) com SAIR (maiusculo) writeln('voce escolheu sair.'); break; end; while not(eof(arq)) do begin find:=false; read(arq,aluno); with aluno do begin if AnsiCompareStr(uppercase(nome),uppercase(pes))=0 then begin //compara os nomes em letra maiuscula find:=true; writeln; writeln('Media de ',nome,' e: ',media:4:2); writeln('Posicao no arquivo: ',filepos(arq)-1); writeln; end; end; end; until pes='sair'; if find=false then writeln('Nome nao encontrado'); close(arq); writeln; writeln('Pressione Enter para voltar ao Menu Principal'); readkey; end;procedure listar; //OPÇÃO 4begin Clrscr; gotoxy (29,1); writeln('Listar os alunos e medias '); writeln; while not(eof(arq)) do begin read(arq,aluno); writeln('Aluno: ',aluno.nome,' ...... Media: ', aluno.media:4:2); end; Close(arq); writeln; writeln('Pressione Enter para voltar para o Menu Principal'); readkey;end; //principalbegin assign (arq, 'alunos.arq'); Return:Clrscr; reset(arq); gotoxy(29,1);writeln('Bem-vindo ao Media alunos'); writeln('O que deseja fazer?'); writeln; writeln('1- Criar um novo arquivo;'); writeln('2- Introduzir um novo aluno;'); writeln('3- Pesquisar aluno por nome;') ; writeln('4- Listar todos os alunos e medias ja cadastrados;'); writeln('5- Sair.'); read(sel); //recebe o seletor do Menu a seguir case sel of //MENU PRINCIPAL 1: begin ini_arquivo; //chama procedimento reescrever arquivo goto Return; end; 2: begin novo_aluno; //chama procedimento que introduz novos alunos goto Return; end; 3: begin pesquisa; //chama procedimento que pesquisa no arquivo goto Return; end; 4: begin listar; //listar goto Return; end; 5: goto Fim; //sair else begin write('Opcao Incorreta. Retornando ao Menu...'); delay(2000); goto Return; end; end; readln; Fim:;end. [ATUALIZADO 12/05] Consegui tornar a procedure mais enxuta, porém o problema com o read(linha 66) continua, que agora é o meu foco. Parece que ele pula a parte de ler a variável pes​(que serve para armazenar o nome que o usuário deseja pesquisar no arquivo): procedure pesquisa; //OPÇÃO 3 - pesquisar no banco de dados var pes: string[25]; //find: byte; begin clrscr; gotoxy(29,1);writeln('Pesquisar Aluno'); writeln; repeat //reset(arq); seek(arq,0); write('Digite o nome do aluno: '); readln(pes); //readln(pes); if uppercase(pes)='SAIR' then break; while not(eof(arq)) do begin read (arq,aluno); if uppercase(pes)=uppercase(aluno.nome) then begin writeln; writeln('A media de ',aluno.nome ,' e: ',aluno.media:4:2); writeln('A posicao do aluno e: ', filepos(arq)-1); writeln; break; end; if eof(arq) then writeln('Aluno nao encontrado.'); end; until uppercase(pes)='SAIR' ; end;

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...