4. Juni 2008 18:02
Hallo zusammen
Ich muss einen Array nach Text sortieren. Hat das von euch schon mal jemand gemacht, wenn ja, wie?
Grüssle
Bo
4. Juni 2008 18:12
Du meinst, du hast einen Array vom Typ Text? Da steht zum Beispiel drin
Array[1]='Boah ey';
Array[2]='Zum Teufel!'
Array[3]='Nee!'
und du möchtest das hier?
Array[1]='Boah ey';
Array[2]='Nee!'
Array[3]='Zum Teufel!'
4. Juni 2008 18:13
Salut Natalie
Ja genau...
Gruss zurück
4. Juni 2008 18:40
Du nimmst einen zweiten Array und füllst ihn nach Bubble-Sort-Algorithums (siehe Google&Co.), würd ich sagen ...
4. Juni 2008 19:19
Wenn ausgeschlossen ist, das Feldwerte mehrfach vorkommen, könnte man auch eine temporäre Tabelle mit einem Feld (die muss zur Laufzeit nicht lizenziert sein) zu Sortierung nutzen. Einfach alle Texte einzeln dort einfügen und hinterher vom ersten Datensatz abarbeiten.
Wenn Feldwerte mehrfach vorkommen können, muss die temporäre Tabelle zwei Felder haben (zweites Feld als Integer, wenn kein INSERT mit 1 möglich dann um 1 erhöhen usw. bis ein INSERT möglich ist).
2. September 2010 08:30
hi, ich hätte auch ne frage zum array sort verfahren.
hab nen array mit 5 INT , diese sollen nach größe sortiert werden.
wie stellt man das am besten an?
2. September 2010 10:59
Bubblesort ist dein Freund:
Wikipedia - Bubblesort
2. September 2010 11:05
Ich würde sagen, dass bei 5 Einträgen die Umsetzung eines Sortieralgorithmus mit Kanonen auf Spatzen schießen ist
.
2. September 2010 11:12
ja das ist mir bewusst, ich hab leider grade keine ahnung wie man das in C/AL um setzt :(
2. September 2010 11:33
Der Nachteil in NAV dürfte sein, dass, wenn ich ein Array vom Typ Int und Dimension 10, in dem die ersten 3 Elemente gefüllt worden sind, am Ende das Array mit 7 führenden Nullen zurück bekomme. Man müsste also die Anzahl der zu sortierenden Elemente mitgeben.
2. September 2010 11:37
- Code:
n := Länge( A )
wiederhole
vertauscht := falsch
für jedes i von 1 bis n - 1 wiederhole
falls A[ i ] > A[ i + 1 ] dann
vertausche( A[ i ], A[ i + 1 ] )
vertauscht := wahr
ende falls
ende für
n := n - 1
solange vertauscht und n > 1
n := 5;
REPEAT
Swapped := FALSE;
FOR i := 1 TO n - 1 DO BEGIN
IF MyArray[i] > MyArray[i+1] THEN BEGIN
SwapInts(MyArray[i],MyArray[i+1]);
Swapped := TRUE;
END;
END;
n := n - 1;
UNTIL Swapped AND n > 1;
So schwer war das nicht, oder? :)
Du musst halt SwapInts noch selbst basteln, was aber nicht so schwer sein sollte. (Stichwort Drittvariable und CallByReference).
Naja McClane, wenn dann habe ich gerne
eine Lösung/Logik für das gleiche Problem, egal wie groß dieses ist.
2. September 2010 11:43
Sebastian Pfliegel hat geschrieben:- Code:
n := 5;
REPEAT
Swapped := FALSE;
FOR i := 1 TO n - 1 DO BEGIN
IF MyArray[i] > MyArray[i+1] THEN BEGIN
SwapInts(MyArray[i],MyArray[i+1]);
Swapped := TRUE;
END;
END;
n := n - 1;
UNTIL Swapped AND n > 1;
Das bricht nach dem ersten Durchlauf inklusive Austausch ab, oder?
2. September 2010 11:59
- Code:
UNTIL (NOT Swapped) OR (n <= 1);
2. September 2010 12:00
Until (Not Swapped) sollte reichen.
2. September 2010 12:08
- Code:
UNTIL (NOT Swapped) OR (n <= 1);
so funktioniert es :)
nur
- Code:
UNTIL (NOT Swapped)
führt bei mir zu einer unvollständigen sortierung :) danke für eure hilfe
für swapint hab ich das hier gebastelt:
- Code:
temp := int2;
int2 := int1;
int1 := temp;
2. September 2010 12:33
NoX hat geschrieben:nur
- Code:
UNTIL (NOT Swapped)führt bei mir zu einer unvollständigen sortierung :)
Wenn's nichts mehr zu tauschen gibt, ist er fertig.
2. September 2010 13:11
Ich hab den Algorithmus doch nur von Wikipedia gekla... ich meine für meine kleine Demonstation benutzt :D
2. September 2010 13:15
Sebastian Pfliegel hat geschrieben:Ich hab den Algorithmus doch nur von Wikipedia gekla... ich meine für meine kleine Demonstation benutzt :D
Liefen deine Abschlussprüfungen auch so?
2. September 2010 13:55
Sebastian Pfliegel hat geschrieben:Ich hab den Algorithmus doch nur von Wikipedia gekla... ich meine für meine kleine Demonstation benutzt :D
den hatte ich auch schon gesehen, konnte es leider nur net umsetzten :( (azubi seit einem monat dabei)
2. September 2010 14:11
McClane hat geschrieben:Liefen deine Abschlussprüfungen auch so?
Um ernst zu bleiben: Ja! Abschlussprüfung zum Fachinformatiker ist nichts anderes als alles Mögliche aus dem Handbuch (welches für die Abschlussprüfung zugelassen ist) zu zitieren.
NoX hat geschrieben:azubi seit einem monat dabei
Den Spass hab ich seit ein paar Wochen hinter mir.
2. September 2010 14:29
So bitteschön ...
- Code:
Text[1] := 'Sortieren, wozu?';
Text[2] := 'Boah ey';
Text[3] := 'MSDynamics.de ist spitze!';
Text[4] := 'Was zum Geier?';
Text[5] := 'Ich will nicht mehr!';
Text[6] := 'Juhu, ich hab ab morgen Urlaub.';
FOR i := 1 to ARRAYLEN(Text)-1 DO BEGIN
FOR j := i+1 to ARRAYLEN(Text) DO BEGIN
IF (Text[j] < Text[i]) THEN BEGIN
TempText := Text[j];
Text[j] := Text[i];
text[i] := TempText;
END;
END;
END;
FOR i := 1 TO ARRAYLEN(Text) DO MESSAGE(Text[i]);
Die Textvariablen sollten Text(50) sein.
19. April 2016 10:10
Hallo,
der Post ist zwar schon was älter, aber ich habe im Zuge meiner eigenen Ausbildung dazu eine Frage:
Ich würde gerne Nummern in einem Array Sortieren, um diese später mit einem anderen Array vergleichen zu können. Die Arrays sollen nach Wertgröße Absteigend sortiert sein.
Mein Problem hierbei ist, dass die Nummern durchaus auch mit einem Buchstaben beginnen, z.B.: Y931 oder K293 aber eben auch ganz ohne Buchstaben wie: 932
Ist es überhaupt möglich Werte vom Typ Code, die auch Buchstaben enthalten zu sortieren? Ich habe nur Beispiele mit reinen Zahlen gefunden, oder wie hier mit String-Längen.
Danke schon mal.
Gruß
Kristin
19. April 2016 10:39
Hallo,
prinzipiell kannst du sortieren, wonach du willst. Deine Vergleichsroutine muss nur entscheiden können, welcher Wert größer bzw. kleiner ist.
Gruß Fiddi
19. April 2016 10:53
Kristin K. hat geschrieben:Ich würde gerne Nummern in einem Array Sortieren, um diese später mit einem anderen Array vergleichen zu können. Die Arrays sollen nach Wertgröße Absteigend sortiert sein.
Mein Problem hierbei ist, dass die Nummern durchaus auch mit einem Buchstaben beginnen, z.B.: Y931 oder K293 aber eben auch ganz ohne Buchstaben wie: 932
Wenn du genauso sortieren möchtest wie im NAV, dann kannst du auch die Variante (mit 2 Feldern und Schlüsseln, also dem INSERT von Arraynr. dem Inhalt des Array) die Kowa vorgeschlagen hat nehmen.
Also eine temporäre Tabelle befüllen und diese für sich im jeweiligen Feld aufsteigend oder absteigend sortieren lassen.
Dann wäre man konform mit seiner Datenbank (native/SQL).
Native und SQL Datenbanken sortieren nämlich Codefelder unterschiedlich.
mfg,
winfy
19. April 2016 13:23
Hallo,
ich habe es nicht über eine Tabelle, sondern über ein zweidimensionales Array gelöst :)
myArray[a][b] wobei a = meine Prod. Order No. ist und b = meine Rohstoff Nr.
Das dann in einen Bubblesort absteigend sortiert.
Danke auf jeden Fall!
Gruß
Kristin
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.