Ein Hallöle von
http://www.FrankNStein.de/Smiley-Wolke.gif und herzlich willkommen in unserer
DP-Gemeinde,
Der Fehler liegt an der Verwendung von
anz.
anz ist nach der Ausführung der Schleife 6 (das hängt mit dem Aufbau der For-Schleife zusammen), daher wird auch eine 6. Zahl im Button2-Ereignis verarbeitet, welche natürlich beim Sortieren an den Anfang rutscht.
Rein vom Tempo her ist das nicht so optimal:
Delphi-Quellcode:
pos := i;
For j := i + 1 to anz do Begin
if a[j] < a[i] Then pos := j;
Ausserdem ist
IMHO die untere Variante übersichtlicher, da nicht ständig eine Zuweisung erfolgt,
Delphi-Quellcode:
hilf := a[j];
a[j] := a[i];
a[i] := hilf;
sondern nur die Zuweisung ausgeführt wird, wenn die Werte auch getauscht werden.
So ist es besser und der Fehler ist auch gleich behoben:
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Var i: Integer;
Begin
Randomize;
ListBox1.Clear;
anz := 5;
For i := 1 to anz do Begin
a[anz] := Round(Random * 1000) / 100;
ListBox1.Items.Add(FloatToStr(a[anz]));
End;
End;
Procedure TForm1.Button2Click(Sender: TObject);
Var i, j: integer;
hilf: real;
Begin
For i := 1 to anz - 1 do
For j := i + 1 to anz do
If a[j] < a[i] Then Begin
hilf := a[j];
a[j] := a[i];
a[i] := hilf;
End;
ListBox1.Clear;
For i := 1 to anz do
ListBox1.Items.Add(FloatToStr(a[i]));
End;
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif