![]() |
4 Zahlen vom Typ "Real" sortieren
Hi Leute bin ein relativer Nub in Delphi, brauche aber nun ma ein Sortierverfahren was relativ einfach 4 Zahlen (z.b., z1,z2,z3,z4) der Reihe nach sortiert. Am besten sollen die Werte übergeben werden an eine neue Variable. Z.b.
if (z1>z2) and (z1>z3) and (z1>z4) then max:=z1; Den minimalsten Wert hab ich auch mit dem Verfahren gemacht nur ist dies sehr unproduktiv weils irgendwann zig Möglichkeiten gibt welcher nun größer ist oder nicht. Komme nicht ganz klar, weiß da jemand Rat? Kenne zwar Bubblesort etc. hab auch versucht mich damit zu beschäftigen nur zu meinen Problem bekomme ich die Verfahren (leider) nicht angewand. MFG |
Re: 4 Zahlen vom Typ "Real" sortieren
nimm doch eine TList, pack dort deine werte rein.
dann kannst du TList.sort aufrufen und alles ist erledigt. beim sort kannst du sogar noch angeben, wie sortziert werden soll. |
Re: 4 Zahlen vom Typ "Real" sortieren
Hi,
du könntest die Zahlen auch einfach in einem Array speichern und dann sortieren.
Delphi-Quellcode:
Soweit erstmal das sortieren, jetzt noch die Deklaration des Arrays und ein Beispielaufruf:
procedure Swap(var a,b: real);
var h: real; begin h:= a; a:= b; b:= a; end; procedure Sortiere(var Zahlen: array of real); var i, j: Integer; begin for i:= 0 to High(Zahlen)-1 do for j:= i+1 to Hihg(Zahlen) do if Zahlen[i]>Zahlen[j] then Swap( Zahlen[i], Zahlen[j]); end;
Delphi-Quellcode:
MfG
var MeinArray: array of real;
... SetLength( MeinArray, 10);//Länge auf 10 Elemente festsetzen //hier können jetzt irgendwelche Zahlen ins Array eingelesen werden ... Sortiere(MeinArray);//Sortierung starten Binärbaum |
Re: 4 Zahlen vom Typ "Real" sortieren
@raven: Das brauch ich aber nicht. Weil ich mit diesen Daten Zahlen/Werten noch weiter arbeiten muss. Deshalb hätte ich sie gerne in neue variablen, die ich dann weiter verwenden kann.
Trotzdem danke |
Re: 4 Zahlen vom Typ "Real" sortieren
Zitat:
du kannst die werte doch auch wieder aus der liste rausholen... |
Re: 4 Zahlen vom Typ "Real" sortieren
Hab das nunmal mit dem Array versucht, nur das funktioniert nich wie ich denke. Dachte der Array ist dann sortiert, und ich kann mir einzelne Elemente rauspicken die mir dann geordnet erscheinen aber macht er nicht. Wo ist der fehler?
Delphi-Quellcode:
aus 7 3 10 6
procedure TForm1.Button1Click(Sender: TObject);
var mya: array [1..4] of real; begin mya[1]:=strtofloat(edit1.Text); mya[2]:=strtofloat(edit2.Text); mya[3]:=strtofloat(edit3.Text); mya[4]:=strtofloat(edit4.Text); Sortiere(mya);//Sortierung starten edit5.Text:=floattostr(mya[4]); edit6.Text:=floattostr(mya[3]); edit7.Text:=floattostr(mya[2]); edit8.Text:=floattostr(mya[1]); end; end. wird 6 6 3 3 aus 1 2 3 4 wird 4 3 2 1 <--- da dacht ich es klappt aber naja das beispiel darüber sagt das da was verkehrt läuft |
Re: 4 Zahlen vom Typ "Real" sortieren
Zitat:
Erstmal die korrigierte Prozedur Swap von mir: (die Prozedur Sortiere bleibt unverändert)
Delphi-Quellcode:
Und dann auf dein Beispiel angewendet müsste das so aussehen:
procedure Swap(var a,b: real);
var h: real; begin h:= a; a:= b; b:= h;//<<-- hier war der Fehler end;
Delphi-Quellcode:
MfG
procedure TForm1.Button1Click(Sender: TObject);
var mya: array of real; begin SetLength(mya, 4); mya[0]:=StrToFloat(edit1.Text); mya[1]:=StrToFloat(edit2.Text); mya[2]:=StrToFloat(edit3.Text); mya[3]:=StrToFloat(edit4.Text); Sortiere(mya);//Sortierung starten edit5.Text:=FloatToStr(mya[3]); edit6.Text:=FloatToStr(mya[2]); edit7.Text:=FloatToStr(mya[1]); edit8.Text:=FloatToStr(mya[0]); end; Binärbaum //Edit: Tippfehler korrigiert |
Re: 4 Zahlen vom Typ "Real" sortieren
danke dir, werd ich dann gleich mal ausprobieren
|
Re: 4 Zahlen vom Typ "Real" sortieren
Binärbaum ist es ja schon aufgefallen, seine Prozedur arbeite mit 'nem (falschen) Startindex, diese arbeitet jetzt etwas besser ... Start- und Entindex sind egal.
Delphi-Quellcode:
procedure Sortiere(var Zahlen: array of real);
var i, j: Integer; t: Real; begin for i:= Low(Zahlen) to High(Zahlen)-1 do for j := i + 1 to High(Zahlen) do if Zahlen[i] > Zahlen[j] then begin t := Zahlen[i]; Zahlen[i] := Zahlen[j]; Zahlen[j] := t; end; end; |
Re: 4 Zahlen vom Typ "Real" sortieren
Zitat:
Ich bin eigentlich davon ausgegeangen, dass ein dynamischer Array verwendet wird, und dynamische Arrays beginnen immer beim Index null (deshalb der Startwert). Außerdem ist bei nur vier Werten ein Sortierverfahren wie Bubble-Sort oder ähnliche fast schon zuviel des Guten, da einige wenige Vergleiche auch reichen würden. Ich hab die Prozedur eigentlich nur vorgeschlagen, da man mit dynamischen Arrays flexibler ist, weil man damit nicht nur ein vierelementiges Array sondern auch ein beliebig langes Array verwenden kann. MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 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