| Autor |
Beitrag |
Stefad
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 12.04.05 17:19
Guten Tag die Herren!
Ich habe Zahlenwerte in einen Array gepackt, mittles Sortierverfahren geordnet und in Edit-Feldern ausgegeben. Soweit so gut.
Nun folgendes Problem:
Ich möchte neben den Zahlen auch Wörter mitsortieren. Und zwar sollen die Wörter im Array genauso sortiert werden wie die Zahlen, sodass ich sie in der selben Reihenfolge wie die Zahlen ausgeben kann. Ist das möglich?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Di 12.04.05 17:45
Kannst du mal bitte etwas Source posten (inkl. Sortierverfahren)?
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Stefad 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 12.04.05 17:59
Also zu Erklärung ich versuche mich an einer Fußballtabelle.
Die Punkte sortiere ich wie folgt:
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: 53:
|
begin m1:=StrToInt(ed111.text); m2:=StrToInt(ed112.text); begin if m1=m2 then begin m1:=1; m2:=1; end else if m1>m2 then begin m1:=3; m2:=0; end else begin m1:=0; m2:=3; end;
zfeld:Array[0..17] of integer;
begin zfeld[0]:=(m1); zfeld[1]:=(m2); zfeld[2]:=(m3); zfeld[3]:=(m4);
for i:= LOW(zfeld) to HIGH(zfeld) do for j:=High(zfeld)-1 downto i do begin if zfeld[j] < zfeld[j+1] then begin hilf:=zfeld[j]; zfeld[j]:=zfeld[j+1]; zfeld[j+1]:=hilf; end; end;
tabelle.edp1.text:=IntToStr(zfeld[0]); tabelle.edp2.text:=IntToStr(zfeld[1]); tabelle.edp3.text:=IntToStr(zfeld[2]); tabelle.edp4.text:=IntToStr(zfeld[3]); end; |
Wie bekomme ich jetzt die Mannschaften gleich sortiert wie die Punkte?
|
|
greg
      
Beiträge: 119
Windows2000, WindowsXP
D5 Prof
|
Verfasst: Di 12.04.05 18:03
Hallo Stefad,
Du hast Wörter, die mit den Zahlen korrespondieren? Die Wörter sollen mit den Zahlen quasi mitsortiert werden? Beim Sortieren wirst Du sehr wahrscheinlich mit Indizes arbeiten?
Geh einfach hin und tu das, was Du mit dem Zahlenarray machst, außer der Vergleichsoperation selbst, gleichzeitig auch mit dem Wörterarray. Dann sollte es passen.
Gruß
Gregor
|
|
Stefad 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 12.04.05 18:10
Ja die Wörter sollen mit den Zahlen mitsortiert werden.
Allerdings ist der Zahlenarray ein Integer und Wörter können da nicht einfach mit mitsortiert werden, oder?
|
|
greg
      
Beiträge: 119
Windows2000, WindowsXP
D5 Prof
|
Verfasst: Di 12.04.05 18:16
Und nochmal Hallo,
die Stelle dort, hab ich gemeint:
Delphi-Quelltext 1: 2: 3: 4: 5:
| begin hilf:=zfeld[j]; zfeld[j]:=zfeld[j+1]; zfeld[j+1]:=hilf; end; |
Allerdings erscheint mir das Ganze etwas umständlich zu sein. Wenn Du die Daten vorher in Editfelder einträgst, kannst Du die Inhalte auch direkt vergleichen und über Hilfsvariablen austauschen. Gehe ich recht in der Annahme, dass Du die Daten in eine Datenbank schreibst? Wenn ja, denk doch mal über eine von der Anzahl der Datensätze unabhängige Lösung nach. Unter Umständen kannst Du ja nen Feld 'Tabellenplatz' einführen, die Platzierung ermitteln und in das Feld eintragen. Die Anzeige machste dann mit einer Query, die nach Tabellenplatz sortiert (... order by Tabellenplatz ...)
Gruß
Gregor
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
greg
      
Beiträge: 119
Windows2000, WindowsXP
D5 Prof
|
Verfasst: Di 12.04.05 18:22
| Zitat: |
Allerdings ist der Zahlenarray ein Integer und Wörter können da nicht einfach mit mitsortiert werden, oder?
|
... doch. Wenn die Zahlen in einem Array stehen, können die entsprechenden Wörter doch auch in einem Array stehen.
Delphi-Quelltext 1: 2:
| var ZahlenArray : Array of Integer; WortArray : Array of String; |
Gruß
Gregor
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
Stefad 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 12.04.05 18:32
Entschuldigung ich tu mich bisschen schwer.
greg hat folgendes geschrieben: |
... doch. Wenn die Zahlen in einem Array stehen, können die entsprechenden Wörter doch auch in einem Array stehen.
Delphi-Quelltext 1: 2:
| var ZahlenArray : Array of Integer; WortArray : Array of String; |
|
Den ZahlenArray sortiert es ja so wie ich es will. Wenn ich jetzt aber einen zweiten WortArray benutzte, übernimmt er ja nicht automatisch die Rangfolge des ZahlenArray.
Das ist mein Problem. Und den Logarythmus möchte ich schon so beibehalten.
Wenn du vielleicht immer noch einen kurzen Quelltext hinzufügen könntest, wäre das schön. Dann ist es für mich leichter verständlich.
Danke
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
greg
      
Beiträge: 119
Windows2000, WindowsXP
D5 Prof
|
Verfasst: Di 12.04.05 18:45
... obwohl ich überzeugt bin, dass Du Dir mit der flachen Hand vor den Kopf schlagen wirst ...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| begin hilf := zfeld[j]; zfeld[j] := zfeld[j + 1]; zfeld[j + 1] := hilf; Mannschaft := WortArray[j]; WortArray[j] := WortArray[j + 1]; WortArray[j + 1] := Mannschaft; end; |
Gruß
Gregor
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
Stefad 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 12.04.05 19:05
Vielen Dank! Das hat mir sehr geholfen!
Sowieso mal ein großes Lob für die schnelle Hilfe, die hier immer wieder angeboten wird!
Bis zum nächsten Problem 
|
|