Ir ao conteúdo
  • Cadastre-se

Lucas Pelepek

Membro Pleno
  • Posts

    56
  • Cadastrado em

  • Última visita

Tudo que Lucas Pelepek postou

  1. Opa,obrigado pela ajuda . acabei fazendo esse código de teste: Program ordenasonumero ; uses modulos; var arqi:file of regis; regi:regis; c,a,tot:integer; vet:vetor; Begin assign(arqi,'cand.ind'); reset(arqi); repeat read(arqi,regi); c:=c+1; vet[c].pf:=c-1; //c=indice do vetor; c-1=posicao fisica no arquivo str(regi.num:4,vet[c].c_chave); until (eof(arqi)); tot:=c; //total de elementos do vetor ordem(vet,tot); for a:=1 to tot do //mostra na tela o ordenado begin writeln(vet[a].pf:5,' ',vet[a].c_chave); if(a mod 40) = 0 then readln; end; write(arqi,regi); close(arqi); End. Ele organiza pelo numero,como eu queria,mas agora não sei porque ele não está gravando isso no Cand.IND. Quando olho o Cand ele continua igual ,não organizado por NUM. Percebi que no cand.ind ele repetiu o ultimo numero executando esse programinha.
  2. . reg.num seria o número de inscrição em cand.ind. se não está claro,talvez queira ver o pdf? na verdade estou testando tudo que vem a cabeça para fazer ele funcionar. COMOFAZERO03.pdf
  3. vou identar nas próximas ; Isso,ele preenche aquele vetor com os dados do CAND.IND ,mais especificamente com o numero de inscrição. colocando assim: begin //ctv:=1; a:=(reg.num); vett10[a].pf:=ctv; seek(arqi,vett10[a].pf); Str(reg.num:4,vett10[a].c_chave); ctv:=ctv+1; end; ele até roda,mas fica num loop infinito na : PROCEDURE CABECA.
  4. não,o vetor vai de 1..2000.(não posso mudar esses parametros por ordem do professor),mesmo mudando dá o mesmo erro. usando como exemplo a procedure ordenanum. colocando 'a:=1' faz o programa não continuar o loop, na linha 62 "ctv:=ctv+1;".
  5. Program TN03testes; uses crt, modulos; var vett10:vetor; vet1t10:vet1; arqi:file of regis; ctv,ctp,es,a,poc,PAG,tv:integer; reg:regis; aux:cc; PROCEDURE CABECA(ord:string[32]);{MODULO ESPECIFICO PARA ESTE PROGRAMA} BEGIN CLRSCR ; PAG:=PAG+1; WRITELN(' RELATORIO GERAL - ORDEM ',ord,' PAGINA:',PAG:3); WRITELN; write(' ORD NUM N O M E ===C P F=== NASCIMENTO CS N1'); WRITELN(' N2 N3 N4 SO CG CC CV'); begin clrscr; CABECA(ord); poc:=ctv; for ctp:=1 to poc do begin seek(arqi,vett10[ctp].pf); read(arqi,reg); begin tv:=tv+1; writeln(tv:5,reg.num:5,' ',reg.NOME,' ',reg.cpf,' ',copy(reg.data,7,2),'/',copy(reg .data,5,2),'/',copy(reg.data,1,4),reg.car:3,reg.n1:4,reg.n2:4,reg.N3:4 ,reg.N4:4,reg.so:4,reg.clg:4,reg.clc:3,reg.ccl:3 ); if(tv MOD 40 = 0)THEN BEGIN readln; CABECA(ord); END; end; close(arqi); writeln('Registros Lidos: ',tv:5); end; end; end; procedure ordenanum(onum:string[32]); BEGIN //Monta o vetor usando o campo chave como número!!! assign(arqi,'CAND.ind'); reset(arqi); readln(arqi,reg); while not(eof(arqi)) do begin begin ctv:=1; vett10[a].pf:=ctv; seek(arqi,vett10[a].pf); Str(reg.num:4,vett10[a].c_chave); ctv:=ctv+1; end; end; //Chama ordenacao ordem(vett10,ctv); //Apresenta na tela o resultado conforme o arquivo LEDIR CABECA(onum); end; procedure ordenanome(onum:string[32]); BEGIN //Monta o vetor usando o campo chave como número!!! assign(arqi,'CAND.ind'); reset(arqi); read(arqi,reg); while not(eof(arqi)) do begin ctv:=ctv+1; vett10[a].pf:=ctv; vett10[a].c_chave:=reg.nome; seek(arqi,vett10[a].pf); read(arqi,reg); end; //Chama ordenacao ordem(vett10,ctv); //Apresenta na tela o resultado conforme o arquivo LEDIR CABECA(onum); end; procedure ordenacpf(onum:string[32]); BEGIN //Monta o vetor usando o campo chave como número!!! assign(arqi,'CAND.ind'); reset(arqi); read(arqi,reg); while not(eof(arqi)) do begin ctv:=ctv+1; vett10[a].pf:=ctv; vett10[a].c_chave:=reg.cpf; seek(arqi,vett10[a].pf); read(arqi,reg); end; //Chama ordenacao ordem(vett10,ctv); //Apresenta na tela o resultado conforme o arquivo LEDIR CABECA(onum); end; procedure ordenadata(onum:string[32]); BEGIN //Monta o vetor usando o campo chave como número!!! assign(arqi,'CAND.ind'); reset(arqi); read(arqi,reg); while not(eof(arqi)) do begin ctv:=ctv+1; vett10[a].pf:=ctv; vett10[a].c_chave:=reg.data; seek(arqi,vett10[a].pf); read(arqi,reg); end; //Chama ordenacao ordem(vett10,ctv); //Apresenta na tela o resultado conforme o arquivo LEDIR CABECA(onum); end; procedure ordenacar(onum:string[32]); BEGIN //Monta o vetor usando o campo chave como número!!! assign(arqi,'CAND.ind'); reset(arqi); read(arqi,reg); while not(eof(arqi)) do begin ctv:=ctv+1; vett10[a].pf:=ctv; Str(reg.car:1,vett10[a].c_chave); seek(arqi,vett10[a].pf); read(arqi,reg); end; //Chama ordenacao ordem(vett10,ctv); //Apresenta na tela o resultado conforme o arquivo LEDIR CABECA(onum); end; //Comeca o Programa BEGIN WRITELN('+++++++++++++++++++++++++++++++++++++++++++++++'); WRITELN(' BEM VINDO A PESQUISA '); WRITELN('+++++++++++++++++++++++++++++++++++++++++++++++'); WRITELN('DIGITE O NÚMERO DO TIPO DE ORDENACAO DESEJADA:'); WRITELN('1)Por Número de inscrição'); WRITELN('2)Por Nome'); WRITELN('3)Por CPF'); WRITELN('4)Por Data de Nascimento'); WRITELN('5)Por Cargo'); WRITE('R: '); read(es); if (es=1) or (es=01) then ordenanum('ORDENA POR NUMERO DE INSCRICAO'); if (es=2) or (es=02) then ordenanome('ORDENA POR NOME DE CANDIDATO'); if (es=3) or (es=03) then ordenacpf('ORDENA POR CPF'); if (es=4) or (es=04) then ordenadata('ORDENA POR DATA DE NASCIMENTO'); if (es=5) or (es=05) then ordenacar('ORDENA POR CARGO'); End. esse é o 'MODULOS UNIT': unit modulos; interface type a36=string[36]; regis=record num:integer; nome:a36; cpf:string[11]; data:string[8]; car,n1,n2,n3,n4,so,clg,clc,ccl:integer end; cc=record pf:integer; c_chave:a36; end; vetor=array[1..2000] of cc; vet1=array[1..2000] of a36; PROCEDURE pebin1(vet:vetor;ext:a36;t:integer;VAR CC:INTEGER); function valdat(d,m,a:integer):boolean; function vercpf(num:string[11]):boolean; procedure ordea(var vet:vet1; t:integer); procedure ordem(var vet:vetor; t:integer); implementation //-----ordena vetor contento em cada posicao a estrutura registro PF+CAMPO CHAVE procedure ordem(var vet:vetor; t:integer); var aux:cc; tot,a,jt:integer; tro:boolean; begin tot:=t; jt:=1; repeat tro:=true; tot:=tot-jt; for a:=1 to tot do if(vet[a].c_chave > vet[a+1].c_chave) then begin aux:=vet[a]; vet[a]:=vet[a+1]; vet[a+1]:=aux; tro:=false; jt:=1; end else jt:=jt+1; until tro; end; //-----ordena um vetor contendo em cada posicao um STRING[36] procedure ordea(var vet:vet1; t:integer); var aux:a36; tot,a,jt:integer; tro:boolean; begin tot:=t; jt:=1; repeat tro:=true; tot:=tot-jt; for a:=1 to tot do if(vet[a] > vet[a+1]) then begin aux:=vet[a]; vet[a]:=vet[a+1]; vet[a+1]:=aux; tro:=false; jt:=1; end else jt:=jt+1; until tro; end; //------valida uma data function valdat(d,m,a:integer):boolean; var dm:integer; DAT:BOOLEAN; BEGIN DAT:=TRUE; IF(A<1900)THEN //ano DAT:=FALSE ELSE IF(M<1) OR (M>12) THEN //mes DAT:=FALSE ELSE BEGIN //dia DM:=31; IF(M=4) OR (M=6) OR (M=9) OR (M=11) THEN //meses com 30 dias DM:=30; IF(M=2) THEN //fevereiro BEGIN DM:=28; IF(A MOD 4) = 0 THEN //bissesto DM:=29; end; IF(D<1) OR (D>DM) THEN DAT:=FALSE END; valdat:=dat; END; //-----pequisa binaria PROCEDURE pebin1(vet:vetor;ext:a36;t:integer;VAR CC:INTEGER); var ii,i9,meio:integer; achou:boolean; begin achou:=false; ii:=1; i9:=t; repeat meio:=(ii+i9) div 2; if(ext = vet[meio].c_chave)then achou:=true else if(ext > vet[meio].c_chave)then ii:=meio+1 else i9:=meio-1; until ((achou) OR (ii > i9)); if( achou ) then CC := meio else CC := 0; end; //-----valida CPF function vercpf(num:string[11]):boolean; var vet:array[1..11] of integer; dvs:array[1..2] of integer; som,a,b,e,f,m,r:integer; aux:boolean; begin aux:=true; for a:=1 to 11 do val(num[a],vet[a],e);{o string "num" já vem validado} f:=8; m:=10; a:=0; repeat som:=0; a:=a+1; f:=f+1; m:=m+1; for b:=1 to f do som:=som+vet[b]*(m-b); r:=som mod 11; dvs[a]:=11-r; if(r<2)then dvs[a]:=0; if(vet[m-1] <> dvs[a])then aux:=false; until ((a=2) or (not aux)); vercpf:=aux; end; end. trabalho da faculdade. Quando tento executar o primeiro code ele me diz "A posição 0 esta fora dos limites do vetor!",alguém pode me ajudar? (tudo foi compilado no pascalzim). Essa é minha primeira vez postando,desculpe se cometi algum erro.

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...