Avatar billede stoney Nybegynder
05. oktober 2003 - 17:08 Der er 1 kommentar og
1 løsning

Sorter Multidimensional dynamic arrays

Som spørgsmålet lyder , hvordan sorter
jeg f.eks. efter 4. "kolonne"

.....
12 13 45 46 45
45 22 33 44 11
......

Stoney
Avatar billede arne_v Ekspert
05. oktober 2003 - 18:07 #1
Du sorterer efter den kolonne og det eneste du skal gøre er at bytte om
på den andre kolonner tilsvarende.

Kode eksempel:

program MultiDimSort;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  mda = array of array of integer;

procedure init(var a : mda; n, m : integer);

var
  i, j : integer;

begin
  randomize;
  setlength(a, n);
  for i := low(a) to high(a) do begin
      setlength(a[i], m);
      for j := low(a[i]) to high(a[i]) do begin
        a[i,j] := random(100);
      end;
  end;
end;

procedure print(var a : mda);

var
  i, j : integer;

begin
  for i := low(a) to high(a) do begin
      for j := low(a[i]) to high(a[i]) do begin
        write(' ', a[i,j]);
      end;
      writeln;
  end;
end;

procedure sort(var a : mda);

var
  i, j, k, tmp : integer;

begin
  for i := low(a) to (high(a) - 1) do begin
      for j := (i + 1) to high(a) do begin
        if a[i,3] > a[j,3] then begin
            for k := low(a[i]) to high(a[i]) do begin
              tmp := a[i,k];
              a[i,k] := a[j,k];
              a[j,k] := tmp;
            end;
        end;
      end;
  end;
end;

var
  a : mda;

begin
  init(a, 10, 5);
  writeln('before');
  print(a);
  sort(a);
  writeln('after');
  print(a);
end.
Avatar billede stoney Nybegynder
05. oktober 2003 - 21:23 #2
Mange tak for hjælpen.

Det virker bare.

Stoney
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester