unit KombiMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
type TListe =
record // Teilstück
Lg : Integer;
// Länge
Bez :
String;
// Bezeichnung
end;
var
Form1: TForm1;
// Listen der Teilstücke
OListe:
array of TListe;
// Originalliste (also so wie eingegeben/unsortiert)
SListe:
array of TListe;
// Sortierte Liste
implementation
{$R *.dfm}
Procedure ListeEinlesen;
begin
SetLength(oListe, 1); oListe[ 0].Lg:=86; oListe[ 0].Bez:='
1/1';
SetLength(oListe, 2); oListe[ 1].Lg:=41; oListe[ 1].Bez:='
2/1';
SetLength(oListe, 3); oListe[ 2].Lg:=58; oListe[ 2].Bez:='
2/2';
SetLength(oListe, 4); oListe[ 3].Lg:=87; oListe[ 3].Bez:='
2/3';
SetLength(oListe, 5); oListe[ 4].Lg:=86; oListe[ 4].Bez:='
2/4';
SetLength(oListe, 6); oListe[ 5].Lg:=78; oListe[ 5].Bez:='
2/5';
SetLength(oListe, 7); oListe[ 6].Lg:=86; oListe[ 6].Bez:='
2/6';
SetLength(oListe, 8); oListe[ 7].Lg:=77; oListe[ 7].Bez:='
2/7';
SetLength(oListe, 9); oListe[ 8].Lg:=83; oListe[ 8].Bez:='
2/8';
SetLength(oListe,10); oListe[ 9].Lg:=90; oListe[ 9].Bez:='
3/1';
SetLength(oListe,11); oListe[10].Lg:=44; oListe[10].Bez:='
3/2';
SetLength(oListe,12); oListe[11].Lg:=57; oListe[11].Bez:='
3/3';
SetLength(oListe,13); oListe[12].Lg:=73; oListe[12].Bez:='
3/4';
SetLength(oListe,14); oListe[13].Lg:=72; oListe[13].Bez:='
3/5';
SetLength(oListe,15); oListe[14].Lg:=65; oListe[14].Bez:='
3/6';
SetLength(oListe,16); oListe[15].Lg:=65; oListe[15].Bez:='
3/7';
SetLength(oListe,17); oListe[16].Lg:=64; oListe[16].Bez:='
3/8';
SetLength(oListe,18); oListe[17].Lg:=60; oListe[17].Bez:='
3/9';
SetLength(oListe,19); oListe[18].Lg:=73; oListe[18].Bez:='
3/10';
SetLength(oListe,20); oListe[19].Lg:=72; oListe[19].Bez:='
3/11';
end;
procedure SortiereListe;
var i,j,k : Integer;
LgTemp : integer;
BezTemp :
string;
N : Integer;
// Anzahl Listeneinträge
begin
n:=Length(oListe);
SetLength(sListe,n);
for i:=1
to n
do begin // sliste:= oListe (kopieren)
sListe[i-1].Lg := oListe[i-1].Lg;
sListe[i-1].Bez := oListe[i-1].Bez;
end;
// BubbleSort
For i:=0
to N-2
do begin
k := i;
// Position des größten Elementes initialisieren
For j := i+1
to N-1
do // Nun wird das größte Elemente im Array [i..N-1]
If sListe[k].Lg < sListe[j].Lg
Then// gesucht und in k die Position gemerkt
k := j;
// '<' mit '>' vertauschen, wenn AUFsteigend sortiert wird.
// k enthält die Position des größten Elementes [i..N]
If i <> k
then Begin// Vertauschen
LgTemp := sListe[i].lg;
sliste[i].Lg := sliste[k].Lg;
sliste[k].Lg := LgTemp;
BezTemp := sListe[i].Bez;
sliste[i].Bez := sliste[k].Bez;
sliste[k].Bez := BezTemp;
End;
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
Var s :
string;
i : Integer;
n : Integer;
t :
String;
begin
ListeEinlesen;
SortiereListe;
// sListe ist jetzt sortiert
n:=Length(oListe);
t:='
';
for i:=0
to n-1
do begin
Str(oliste[i].Lg,s);
t:=t+s+'
- '+oListe[i].Bez+chr(10);
end;
Label1.Caption:=t;
t:='
';
for i:=0
to n-1
do begin
Str(sliste[i].Lg,s);
t:=t+s+'
- '+sListe[i].Bez+chr(10);
end;
Label2.Caption:=t;
end;
end.