TIA Bubbelsort in SCL

Code:
FOR #tMaxIndex := UpperBound - 1 TO 0 BY -1 DO // UpperBound: hier muss der maximal zulässige Index stehen 
    ...
END_FOR;

Nein Heinrich,
bei Upperbound muss der höchste Index des Arrays -1 stehen - du vergleichst ja Wert [Index] mit Wert [Index +1] ... und hier erfolgt dann (bzw. sonst) die Überschreitung der Array-Grenzen ...
Gruß
Larry
 
Hmm, für mich sieht das so aus: #tIndex kann maximal #tMaxIndex werden, und #tMaxIndex ist maximal UpperBound - 1, und #tIndex + 1 ist dann max. UpperBound

Harald
 
Hallo Harald,
kriegst du den Text auch in Deutsch hin ?
Ich habe absolut nicht verstanden was du da jetzt sagen wolltest ...
Gruß
Larry
 
Hallo Larry,
Du schriebst: der Code von Heinrich überschreitet die Array-Grenzen. ("du vergleichst ja Wert [Index] mit Wert [Index +1] ... und hier erfolgt dann (bzw. sonst) die Überschreitung der Array-Grenzen ...")
Ich meine: er tut es nicht. Er überschreitet nicht die Array-Grenzen. Upperbound muss nicht der höchste Index des Arrays -1 sein, sondern so wie von Heinrich geschrieben "UpperBound: hier muss der maximal zulässige Index stehen" ist korrekt.

Gruß
Harald
 
Doch Larry, meine - 1 ist doch genauso viel wert, wie Deine!
 
Sorry ... Asche auf mein Haupt ...
Ich hatte das mit dem Upperbound -1 in der Schleife nicht gesehen. Ihr habt natürlich vollkommen Recht.
Auf jeden Fall hat der TE nun aber eine Anleitung gegen seinen (vermutlichen) Fehler ...

Gruß
Larry
 


Hi erst mal vielen Dank für die vielen Antworten.

Ja geanu ich muss ein Array of Struct 0-4 (5 Werte) nach dem Typ Time sortieren.

Dieses soll aber nur bei Sps Neustart oder Sort passieren.

Ne leider bin ich noch nicht wirklich weiter.
 
Dann muss deine Schleife von 3 auf 0 mit Schrittweite -1 laufen.
Ich weiß jetzt gerade wirklich nicht was da nun noch unklar ist. Was verstehst du nicht ?

Gruß
Larry
 
Dieses soll aber nur bei Sps Neustart oder Sort passieren.

Ne leider bin ich noch nicht wirklich weiter.
Die "DrumRum"-If-Abfrage habe ich weggelassen, weil Du sie leicht wieder hinzufügen kannst und sie an sich nichts mit dem Prinzip des Sortierens zu tun hat.
Das, was ich als "UpperBound" in den Code geschrieben habe, musst Du nur durch den für Deinen Fall richtigen Wert - nämlich 4 - ersetzen.
Ansonsten weiss ich nicht, warum Dir das nicht weiterhilft ...
Du darfst ruhig etwas konkreter Dein Problem beschreiben, wenn wir es verstehen sollen!
 
Ich verstehe leider nicht, was Du mit der Zeile '#sBrakePadSort := #iBrakePad;' bewirken willst.
Füge sie mal probeweise vor der Zeile 'FOR #tMaxIndex := 4 - 1 TO 0 BY -1 DO' ein, damit Dein zu sortierendes Array nicht nach jedem Bisschen sortieren wieder in den AnfangsZustand versetzt wird.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…