![]() |
Stringgrid sortieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Mein Problem ist folgendes. In ein Stringgrid werden Zufallszahlen eingefügt, die in die Reihe darunter sortiert ausgegeben werden. Das wird mit einer modifizierten Versoion einer funktion gelösst die die kleinste Zahl sucht. Wäre nett, wenn sich das jemand angucken könnte. siehe Anhang.
Delphi-Quellcode:
procedure TForm1.btSortierenClick(Sender: TObject);
var i,j,min,hilfsvar:integer; begin for i:=1 to 10 do begin Stringgrid1.Cells[i-1,2]:=inttostr(kleinstezahl(i,10)); end; end;
Delphi-Quellcode:
Vielen Dank im Vorraus!!
function kleinstezahl(a,b:integer):integer;
var i,vergleich:integer; begin vergleich:=zahlen[a]; for i:=a to b do begin if zahlen[i]<vergleich then vergleich:=zahlen[i]; end; result:=vergleich; end; MfG |
Re: Stringgrid sortieren
Zitat:
|
Re: Stringgrid sortieren
Danke! Aber hast du auch eine Lösung für mich??
MfG |
Re: Stringgrid sortieren
Wieso sortierst Du denn nicht das Zahlenarray?
Infos zu Sortierverfahren findest Du hier -> ![]() Grüße Klaus |
Re: Stringgrid sortieren
Das ist natürlich auch einen Möglichkeit, allerdings würde ich es gerne genau so lösen...
Ich find einfach den Denklfehler nicht. Der müsste doch bei jedem Schleifendurchlauf die kleinste Zahl in das Stringgrid schreiben... Danke nochmal für den Link! MfG langer_hans |
Re: Stringgrid sortieren
Delphi-Quellcode:
Wer sagt Dir denn, daß die kleinste Zahl immer in der Position kleiner i liegt,
procedure TForm1.btSortierenClick(Sender: TObject);
var i,j,min,hilfsvar:integer; begin for i:=1 to 10 do begin Stringgrid1.Cells[i-1,2]:=inttostr(kleinstezahl(i,10)); end; end; Liegt sie dahinter wird diese Zahl des öfteren als kleinste Zahl erkannt.
Delphi-Quellcode:
Wenn Du hier die kleinste Zahl ermittelt hast
function kleinstezahl(a,b:integer):integer;
var i,vergleich:integer; begin vergleich:=zahlen[a]; for i:=a to b do begin if zahlen[i]<vergleich then vergleich:=zahlen[i]; end; result:=vergleich; end; mußt Du sie an die a-te Position des Array schieben und die Zahl von der a-ten Position an die Position der kleinsten Zahl. Das nennet sich sortieren durch vertauschen. Ist auch in dem Link erklärt. Grüße Klaus |
Re: Stringgrid sortieren
Zitat:
Zitat:
Es tut mir echt Leid, dass ich es nicht verstehe, aber trotzdem Danke für die Hilfe!!! :dp: :oops: |
Re: Stringgrid sortieren
Mit Deinem Code läuf das so:
z.B. Zahlen im Array : 9 2 8 1 4 7 8 .. Nach dem ersten Durchlauf (i=1) bekommst Du die 1 als kleinste Zahl. Nach dem zweiten Durchlauf (i=2) bekommst Du die 1 als kleinste Zahl. Warum , weil die 1 immer noch an der gleichen Position steht wie zuvor. Nach dem dritten Durchlauf (i=3) bekommst Du die 1 als kleinste Zahl. Nach dem vierten Durchlauf (i=4) bekommst Du die 1 wieder als kleinste Zahl. Nach dem fünften Durchlauf (i=5) bekommst Du die 4 als kleinste Zahl. Wo ist die 2 geblieben? und so geht das weiter, es gehen Zahlen verloren und es werden Zahlen wiederholt. Grüße Klaus |
Re: Stringgrid sortieren
Bingo!!! :bouncing4:
Jetzt hab ichs verstanden!!! Vielen Dank. Ich probiers dann demnächst mal aus und meld mich dann nochmal. Vielen Dank und MfG langer_hans EDIT: Ich habs geschafft! hier noch mal der erfolgreiche Code:
Delphi-Quellcode:
Vielen Dank nochmal!! :dp:
function kleinstezahl(a,b:integer):integer;
var i,vergleich:integer; begin vergleich:=zahlen[a]; for i:=a to b do begin if zahlen[i]<vergleich then begin vergleich:=zahlen[i]; zahlen[i]:=zahlen[a]; zahlen[a]:=vergleich; end; end; result:=vergleich; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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