Autor Beitrag
Stefad
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 12.04.05 17:59 
Also zu Erklärung ich versuche mich an einer Fußballtabelle.
Die Punkte sortiere ich wie folgt:

ausblenden volle Höhe Delphi-Quelltext
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:
{Zuordnung der Werte}

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;

{Zuweisung in Array}

zfeld:Array[0..17] of integer;

begin
zfeld[0]:=(m1); 
zfeld[1]:=(m2);
zfeld[2]:=(m3);
zfeld[3]:=(m4);

{Sortierung}

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;

{Ausgabe}

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: Di 12.04.05 18:16 
Und nochmal Hallo,

die Stelle dort, hab ich gemeint:
ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt.
greg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: 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.

ausblenden Delphi-Quelltext
1:
2:
var ZahlenArray : Array of Integer;
    WortArray : Array of String;


Gruß
Gregor

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Stefad Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 12.04.05 18:32 
Entschuldigung ich tu mich bisschen schwer.

user profile icongreg hat folgendes geschrieben:

... doch. Wenn die Zahlen in einem Array stehen, können die entsprechenden Wörter doch auch in einem Array stehen.

ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt.
greg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: Di 12.04.05 18:45 
... obwohl ich überzeugt bin, dass Du Dir mit der flachen Hand vor den Kopf schlagen wirst ...

ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Stefad Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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 :wink: