GpL Posted August 27, 2005 at 10:28 AM Report #4086 Posted August 27, 2005 at 10:28 AM Boas.. Tou aqui com uma duvida.. eu sei ordenar um array,obvio.. mas queria fazer um procedimento.. em que um gajo so metia tipo ordenar(arrayxxx); e ele ordenava o array.. mas não tou a conseguir fazer esse procedimento.. se alguem ajudasse agradecia.. hasta..
GpL Posted August 27, 2005 at 10:43 AM Author Report #4087 Posted August 27, 2005 at 10:43 AM encontrei estes procedimentos. mas não tou a perceber bem as variaveis nem nada. procedure sort( var r : ArrayToSort; lo, up : integer ); label 999; var d, i, j : integer; tempr : ArrayEntry; begin d := up-lo+1; while d>1 do begin if d<5 then d := 1 else d := trunc( 0.45454*d ); {*** Do linear insertion sort in steps size d ***} for i:=up-d downto lo do begin tempr := r; j := i+d; while j <= up do if tempr.k > r[j].k then begin r[j-d] := r[j]; j := j+d end else goto 999; {*** break ***} 999: r[j-d] := tempr end end end; procedure sort( n, unit, direction : integer ); var i, r : integer; begin if n=0 then {*** Mark as dummy entry ***} FilStat[unit] := '-' else if n=1 then ReadOneRun( unit, direction ) else for i:=1 to T-2 do begin r := n div (T-i-1); n := n-r; sort( r, (unit+i-2) mod T + 2, -direction ); MergeOneRunInto( unit, -direction ) end end; type vector=array[1..100] of integer;var a:vector; i,j,k,l,m,n:integer; procedure sort(li,ls:integer); var aux:integer; begin if a[*]>a[ls] then begin aux:=a[*]; a[*]:=a[ls]; a[ls]:=aux; end; end; sendo este ultimo talvez o mais facil de compreender.
GpL Posted August 27, 2005 at 10:49 AM Author Report #4088 Posted August 27, 2005 at 10:49 AM ja agora deixo aqui um site com o bubble sort para todas as linguagens http://wikisource.org/wiki/Bubble_sort
GpL Posted August 27, 2005 at 10:52 AM Author Report #4089 Posted August 27, 2005 at 10:52 AM Mas ainda não sei como é que hei de fazer :S ..
GpL Posted August 27, 2005 at 11:39 AM Author Report #4091 Posted August 27, 2005 at 11:39 AM alguem me diz o que esta mal aqui neste procedimento para ordenar um array de inteiros?! procedure ordenarint(x:array of integer;valmax:integer); {valmax=valormaximo do array}var i,j,aux:integer; begin for i:=1 to valmax-1 do for j:=i+1 to n do if x>x[j] then begin aux:=x; x:=x[j]; x[j]:=aux; end;
deathseeker25 Posted August 27, 2005 at 07:35 PM Report #4096 Posted August 27, 2005 at 07:35 PM alguem me diz o que esta mal aqui neste procedimento para ordenar um array de inteiros?! procedure ordenarint(x:array of integer;valmax:integer); {valmax=valormaximo do array}var i,j,aux:integer; begin for i:=1 to valmax-1 do for j:=i+1 to n do if x[i']>x[j] then begin aux:=x; x:=x[j]; x[j]:=aux; end; Falta um end...naaa...mas não é disso porque acima tinhas colocado certo. Muito sinceramente não estou a ver o que está mal. Cumps
David Pintassilgo Posted August 27, 2005 at 07:52 PM Report #4097 Posted August 27, 2005 at 07:52 PM alguem me diz o que esta mal aqui neste procedimento para ordenar um array de inteiros?! procedure ordenarint(x:array of integer;valmax:integer); {valmax=valormaximo do array}var i,j,aux:integer; begin for i:=1 to valmax-1 do for j:=i+1 to n do if x[i']>x[j] then begin aux:=x; x:=x[j]; x[j]:=aux; end; procedure ordenarint(x:array of integer;valmax:integer); {valmax=valormaximo do array} var i,j,aux:integer; begin recomeca: for i:=1 to valmax-1 do for j:=i+1 to valormaximo do if x[i]>x[j] then aux:=x[i]; x[i]:=x[j]; x[j]:=aux; goto recomeca endif; next next end; axo k é mais ou menos isto, a parte dos endif's e next e isso é que nao sei bem como é pq não me recordo exactamente de como se implementa os comandos mas isso tb nao intereca. Faltava-vos ai a parte de 'Quando troca=true Recomecar' cool stuffs to check. http://blog.zxcoders.com//
GpL Posted August 27, 2005 at 08:02 PM Author Report #4098 Posted August 27, 2005 at 08:02 PM axo k é mais ou menos isto, a parte dos endif's e next e isso é que nao sei bem como é pq não me recordo exactamente de como se implementa os comandos mas isso tb nao intereca. Faltava-vos ai a parte de 'Quando troca=true Recomecar' hum.. endif e next em pascal não existe lol. e acho que o problema não seja disso.. mas thanks na mesma.
GpL Posted August 27, 2005 at 08:04 PM Author Report #4099 Posted August 27, 2005 at 08:04 PM se fizer sem ser procedimento dá,e já tou farto de fazer.. mas como procedimento nunca fiz.. e tinha de ser em procedimento..
David Pintassilgo Posted August 27, 2005 at 11:56 PM Report #4100 Posted August 27, 2005 at 11:56 PM sim,...eu sei que nao há endif em pascal,...mas era só para estruturar o codigo/algoritmo, o que eu estava a dizer é que falta a parte que sempre que há alguma troca tem de recomecar do inicio todos os ciclos FOR. Agora a nivel da implementação do codigo no Pascal em concreto não sei, já não me lembro NADA mesmo disso. cool stuffs to check. http://blog.zxcoders.com//
GpL Posted August 28, 2005 at 04:50 PM Author Report #4109 Posted August 28, 2005 at 04:50 PM eu bem me parecia que o meu procedimento tava bem,só foi preciso acrescentar isto procedure ordenarint(var x:arrayof integer .....); lol
will09 Posted October 29, 2005 at 01:30 PM Report #5971 Posted October 29, 2005 at 01:30 PM program insercao; const max = 5; var vetor : array[1..max] of integer; i,j,temp : integer; Begin writeln('Digite ',max,' numeros inteiros : '); writeln; For i := 1 to max do Begin write('Elemento[',i,']: '); readln(vetor); End; For i := 2 to max do Begin j := i; While (j > 1) and (vetor[j-1] > vetor[j]) do Begin temp := vetor[j-1]; vetor[j-1] := vetor[j]; vetor[j] := temp; j := j - 1; End; End; writeln; writeln('Vetor Ordenado: '); For i := 1 to max do write(vetor:3); writeln; readln; End. [/code] Espero k ajude! Isto ordena por incersão! PEACE =)[/code]
will09 Posted October 29, 2005 at 01:31 PM Report #5973 Posted October 29, 2005 at 01:31 PM Tb axei este k é uma ordenação por bolha! Program bolha; const max = 5; var vetor : array[1..max] of integer; i,n,temp : integer; Begin writeln('Digite ',max,' numeros inteiros : '); writeln; For i := 1 to max do Begin write('Elemento[',i,']: '); readln(vetor[i]); End; n := max; Repeat For i := 1 to n-1 do if (vetor[i] > vetor[i+1]) then Begin temp := vetor[i]; vetor[i] := vetor[i+1]; vetor[i+1] := temp; End; n := n - 1; Until (n = 1); writeln; writeln('Vetor Ordenado: '); For i := 1 to max do write(vetor[i]:3); writeln; readln; End. Espero k te ajude! PEACE =)
GpL Posted October 29, 2005 at 02:35 PM Author Report #5978 Posted October 29, 2005 at 02:35 PM Este tópico já é bastante antigo,já tinha descoberto a solução (como se pode verificar no tópico .. ) mas obrigado na mesma! 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now