![]() |
Zeilen den Tauschversuchen anpassen. Rowcount, rows, row etc
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
Ich sitze bereits seit mehreren Stunden an folgendem Problem. Ich möchte das soviel Zeilen wie Tauschversuche vorgenommen worden sind angezeigt werden. Aber entweder zeigt er mir gar kein Ergebnis an oder aber er macht unendlich viele Zeilen... Vielleicht habt ihr eine Idee, hier erstmal der Quellcode:
Delphi-Quellcode:
Const Anzahl = 10;
Zeilen = 50; Type TFeld = ARRAY [1 .. Anzahl] OF Integer; VAR feld, neuesFeld : TFeld; Zeile, i, Tauschzaehler : Integer; Start, Ende : TTime; PROCEDURE TMainForm.zeit (Var Wert: TTime); Begin Wert := Time End; procedure TMainForm.GridLeeren; Var x,y: Integer; Begin For x := 1 To Anzahl Do For y := 1 To Zeilen Do Begin BubbleStringGrid.Cells [x, y] := ''; QuickStringGrid.Cells [x, y] := ''; End; End; PROCEDURE vertausche_feld_pos (l, r: Integer) ; Var Puffer: Integer; BEGIN Puffer := Feld[l]; Feld[l] := Feld[r]; Feld[r] := Puffer; Inc (Tauschzaehler); End; PROCEDURE TMainForm.ZeigeQuickDaten; Var x: Integer; BEGIN Inc (Zeile); For x := 1 To Anzahl Do QuickStringGrid.Cells [x, Zeile] := IntToStr(Feld [x]); END ; PROCEDURE TMainForm.ZeigeBubbleDaten; Var x: Integer; BEGIN Inc (Zeile); BubbleStringGrid.Rows[1]; For x := 1 To Anzahl Do BubbleStringGrid.Cells [x, Zeile] := IntToStr(Feld [x]); END ; PROCEDURE quicksort (links ,rechts: INTEGER) ; BEGIN // END; procedure TMainForm.Quick_sort; Begin quicksort (1,Anzahl); End; procedure TMainForm.Bubble_sort (letztes : integer); var grenze, i, merke : integer; Begin grenze := 1; letztes := anzahl; while grenze < letztes do begin merke := letztes; For i := letztes downto grenze + 1 do begin If (Feld[i - 1] > Feld[i]) then begin vertausche_feld_pos(i, i - 1); merke := i; ZeigeBubbleDaten; end; end; grenze := merke; end; end; procedure TMainForm.Zahlenerzeugen; Var x: Integer; Begin randomize; For x:= 1 To Anzahl Do neuesFeld [x] := Random (100); End; procedure TMainForm.AblaufRadioGroupClick(Sender: TObject); var letztes : integer; begin Case AblaufRadioGroup.ItemIndex Of 0: Begin Zahlenerzeugen; Feld := neuesFeld; Zeile := -1; ZeigeQuickDaten; Zeile := -1; ZeigeBubbleDaten; End; 1: Begin zeit (Start); For i := 1 To 10000 Do Begin Tauschzaehler := 0; Zeile := 0; Feld := neuesFeld; Bubble_sort(letztes); End; zeit (Ende); ErgebnisseStringGrid.cells[1,1] := TimeToStr (Ende - Start); ErgebnisseStringGrid.cells[1,2] := IntToStr (Tauschzaehler); zeit (Start); For i := 1 To 10000 Do Begin Tauschzaehler := 0; Zeile := 0; Feld := neuesFeld; Quick_sort; End; zeit (Ende); ErgebnisseStringGrid.cells[2,1] := TimeToStr (Ende - Start); ErgebnisseStringGrid.cells[2,2] := IntToStr (Tauschzaehler); End; 2: Application.Terminate; End; end; procedure TMainForm.FormCreate(Sender: TObject); Var y: Integer; begin BubbleStringGrid.ColCount := Anzahl + 1; QuickStringGrid.ColCount := Anzahl + 1; BubbleStringGrid.Cells [0, 0] := 'Bubble'; QuickStringGrid.Cells [0, 0] := 'Quick'; For y := 1 To Zeilen Do Begin QuickStringGrid.Cells [0, y] := IntToStr(y); BubbleStringGrid.Cells [0, y] := IntToStr(y); End; ErgebnisseStringGrid.Cells [0,0] := 'Ergebnisse'; ErgebnisseStringGrid.cells [0,1] := 'Dauer'; ErgebnisseStringGrid.cells [0,2] := 'Tauschzahl'; ErgebnisseStringGrid.cells [1,0] := 'Bubble'; ErgebnisseStringGrid.cells [2,0] := 'Quick'; end; end. Ich weiss nun nicht ob es sinnvoller ist den ganzen Quellcode zu senden oder nur den Teil wo ich denke der Fehler liegt. Daher schicke ich lieber den ganzen. Vielen Dank für Eure Hilfe! mfg lun87 |
Re: Es findet sich einfach keine Lösung... zu viele Zeilen..
Könntest du bitte versuchen deinem Beitrag einen aussagekräftigen Titel zu geben so das jeder sofort weiß worum es in dem Beitrag gehen könnte wenn er nur den Titel liest :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz