Step 7 Nummer von Array of Bool wegschreiben?

balkanaz

Level-1
Beiträge
82
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

ich habe angefangen ein wenig im SCL rumzuspielen.

In einem Lager gibt es 50 Fächer. Beim Anfragen nach dem nächsten freien Fach hatt ich vor es über eine Schleife
abzufragen.

IF nächstes_Freies_Fach = TRUE THEN

FOR i:=1 TO 50 BY 1 DO
IF Fach.Belegung = FALSE THEN
.....
....


Jetzt würde ich gerne das in ein INT Variable schreiben. Aber wie?
Die Fachbelegung die false ist, als z.B. Fach 35, Fach.Belegung[35]:=Fach; // Fach: INT;
 
In einem Lager gibt es 50 Fächer. Beim Anfragen nach dem nächsten freien Fach hatt ich vor es über eine Schleife
abzufragen.

IF nächstes_Freies_Fach = TRUE THEN

FOR i:=1 TO 50 BY 1 DO
IF Fach.Belegung = FALSE THEN
.....
....


Jetzt würde ich gerne das in ein INT Variable schreiben. Aber wie?
Die Fachbelegung die false ist, als z.B. Fach 35, Fach.Belegung[35]:=Fach; // Fach: INT;

Code:
[COLOR=#0000ff]IF[/COLOR] nächstes_Freies_Fach [COLOR=#0000ff]THEN[/COLOR]

[COLOR=#0000ff]   FOR[/COLOR] [COLOR=#ee82ee]i[/COLOR]:=1 [COLOR=#0000ff]TO[/COLOR] 50 [COLOR=#0000ff]BY[/COLOR] 1 [COLOR=#0000ff]DO[/COLOR]
[COLOR=#0000ff]       IF[/COLOR] NOT Fach.Belegung[i] [COLOR=#0000ff]THEN

          [/COLOR][B][COLOR=#008000]Fach := i;   [/COLOR][/B][COLOR=#008000]// Fachnummer speichern[/COLOR][B][COLOR=#008000]
[/COLOR][/B][COLOR=#008000]          EXIT;        // Schleife vorzeitig abbrechen, wenn die 1. und nicht die letzte freie Zelle gewünscht ist. 
[/COLOR][COLOR=#0000ff]
       END_IF;
       ...
   NEXT;
   ...
END_IF;
[/COLOR]
PS:
Bools fragt man IMHO besser ohne einen Vergleich ab.


PPS:
Verwende für Deine Codeauszüge bitte die [CODE]-Tags, 2. Icon-Zeile, letztes Icon (#).
Dann funktionieren auch Einrückungen, wie Du siehst.
 
Zuletzt bearbeitet:
Sucht in beiden Richtungen ab dem vorgegebenen Index:
Code:
iOdd := iAnz MOD 2 ;             // iAnz ist Anzahl der ArrayElemente; Index = 0 ... Anz-1
iIdxFnd := -1 ;                  // -1 ist Kennzeichen für "nicht gefunden"
iIdxInc := iIdxDec := iIdxBeg ;  // iIdxBeg gibt AnfangsIndex für Suche an
Repeat 
    iIdxInc := (iIdxInc + 1) Mod iAnz ;
    iIdxDec := (iIdxDec - 1) Mod iAnz ;
    If Not Fach.Belegung[iIdxInc] Then iIdxFnd := iIdxInc ; Exit ; End_If ;
    If Not Fach.Belegung[iIdxDec] Then iIdxFnd := iIdxDec ; Exit ; End_If ;
Until iIdxInc - iIdxDec + iOdd = 0 
End_Repeat ; // Ergebnis in iIdxFnd
 
Zurück
Oben