Hallo alle im df,
Ich habe jetzt mein Bubblesortprogramm geschrieben, doch ich habe immer noch ein paar Probleme. Wenn ich meine Zufallszahlen sortieren möchte, werden die ersten beiden Zahlen miteinander verglichen. Ist die erste Zahle kleiner als die danachfolgende, so schreibt er die gleiche Zahlenreihe nocheinmal und hört dann auf.
Ist die erste Zahl größer als die zweite, so vertauscht er diese auch, bis eine andere Zahl größer ist. Hört aber dann auch auf und macht nicht weiter.
Irgendwie steh ich aufm Schlauch. Vielleicht könnt ihr mir ja weiter helfen welche Fehler ich da noch drin habe:
Vielen Dank schon mal im voraus für eure Hilfe:-)
Hier habe ich mal meinen Quelltext: PS: Im Dateianhang ist mein Programm dabei!
Da könnt ihr den Fehler sehen
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| type Datfeld= Array [1..10] of integer;
var Form1: TForm1; Feld: Datfeld; wert, lauf,i:integer; implementation
{$R *.DFM}
procedure TForm1.ZufallszahlenClick(Sender: TObject); begin for lauf:= 1 to 10 do begin stringgrid1.cells[lauf-1,0]:= inttostr(lauf); end; randomize; for lauf:=1 to 10 do begin Feld[lauf]:= random(100)+1; stringgrid1.cells[lauf-1,1]:= inttostr(Feld[lauf]); end; end;
procedure TForm1.SortierenClick(Sender: TObject); var vertauscht:boolean; hilf:integer; begin i:=1; vertauscht:=false; repeat if feld[i]>feld[i+1] then begin hilf:= Feld[i]; Feld[i]:=feld[i+1]; Feld[i+1]:=hilf; vertauscht:= true; end else vertauscht:=false; for lauf:= 1 to 10 do stringgrid2.cells[lauf-1,i-1 ]:=inttostr(Feld[lauf]); i:=i+1;
until not vertauscht;
end;
end. |
Moderiert von
Klabautermann: Delphi-Tags hinzugefügt.