Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted

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;

Posted
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

Posted
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//

Posted

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.

Posted

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

  • 2 months later...
Posted

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]

Posted

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 =)

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.