TIA Array vom Typ Bool abfragen

blubbb

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne abfragen ob mindestens 1 Array von 100 TRUE ist , ohne jeweils jedes einzelne Array oder zu verknüpfen.

Das ganze auf SCL.

Aktuell:
Code:
IF Array[1] OR Array [2] OR Array [3] OR Array [4] OR.......... Array [100]
THEN
Abfrage:=1;
ELSE
Abfrage:=0;
END_IF;

Kann mir jemand helfen ?
 
For Schleife von 1..100.
Der Index der Laufvariable ist deine Arraynummer.

Dann brauchst du noch eine variable für die Bedingung das du eine gefunden hat.

So sinn gemäß : if (array[laufvariable])
then gefunden= true

Das steht in der Schleife.Die Syntax muss du anpassen.Üben.Üben.Üben!:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du gar nicht weiter kommst, schicke ich dir alle meine Funktionen zu 2 dimensionalen Feldern in SCL.
Da ist alles drinnen.Von wert suchen in Liste über array löschen,sortieren.Größter Wert u.s.w

Es läuft aber immer mit einem 2 dimensionalen array, also 2 Schleifen.
 
Ah ich habe mich unverständlich ausgedrückt sorry.

Das mit der FOR-Schleife habe ich schon versucht das Problem mit der FOR-Schleife ist das wenn ja nur 1 Array TRUE ist die anderen Arrays das Bit gefunden wieder zurücksetzen.

Also mein Ziel ist falls 1 Bit TRUE dann setze ich mir das "gefunden" Bit sobald aber alle Arrays wieder FALSE sind soll das Bit auch wieder zurück gesetzt werden !
 
Dann machst du in der For Schleife noch eine IF abfrage welche das Bit auf true setzt

Also z.B.
Code:
if Array[laufvariable] then
  Bit := true;
END_if;

Zurücksetzen musst du das bit dann ausserhalb von FOR und zwar vor der FOR schleife.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja dann hast du doch alles.Innerhalb der Schleife kann das Bit ja nur 1 oder Null werden.
Verstehe ich jetzt nicht.Du läufst das array durch.Findest du eine 1 weisst du der boolschen Variable in der Schleife eine 1 zu.
Findest du keine weiist du der Variabele ine Null zu.

Die Zuweissung erfolgt in der Schleife mit if und else.(2 Zustände).
Oder verstehe ich dich jetzt nicht richtig.

Du hast nur if (array[nummer)

gefunden=true;

else
gefunden=false;

Wenn er jetzt keine 1 mehr findet ist doch gefunden= false?
 
Ah ok jetzt funktionierts danke für den Tip mit dem zurücksetzen außerhalb der Schleife.

Code:
    "Bit" := 0;    
FOR #i2 := 1 TO 100 BY 1 DO

        IF Array [#i2]
        THEN
            "Bit" := 1;
        END_IF;
             
END_FOR;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast nur if (array[nummer)

gefunden=true;

else
gefunden=false;

Wenn er jetzt keine 1 mehr findet ist doch gefunden= false?

Das funktioniert so natürlich nicht. Da gewinnt immer das Ergebnis des letzten abgefragen arrayelements. Die ifabfrage wäre dann auch sinnlos da

Code:
gefunden := (array[nummer);

Dasselbe machen würde.
 
Jetzt klappt alles :) danke euch

p.s. Dein Angebot mit den Funktionen für Arraybearbeitung würde ich auch annehmen :)
 
Code:
    "Bit" := 0;    
FOR #i2 := 1 TO 100 BY 1 DO

        IF Array [#i2]
        THEN
            "Bit" := 1;
        END_IF;
             
END_FOR;
Ich würde dafür eher Repeat statt FOR nehmen (ich geh' mal davon aus, das "Bit" eigentlich Bool ist):
Code:
   #i2  := 1;
   REPEAT
        "Bit" := Array [#i2];
         #i2  := #i2 + 1;
   UNTIL "Bit" OR #i2 > 100
   END_REPEAT;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das er dann aufhört wenn die Bedingung erfüllt ist. Kann also Zykluszeit gespart werden. Bei FOR arbeitet er immer das gesamte Array ab.
Der Nachteil ist, je nachdem wieviele solche Repeats man in einem Programm hat umso unstetiger wird der Zyklus. Das kann dann auch mal ne Zykluszeitüberschreitung geben wenn das programm auf einmal bei mehreren zuviele Elemente abarbeiten muss und man nie getestet hat ob der Zyklus auch langt wenn alle arrays komplett durchgeackert werden müssen.

mfG René
 
Zuletzt bearbeitet:
:D:D Programmieren jetzt schon Friseure und Bäcker?:D:D

C05FVFNDQVBFMi4wAwEAAAAh QQFCgACACwAAAAADwAPAAACL5QNmceSAeFiIFp56r0ASR08oSOV2glulqiuaRuiyozJ9Eh StR5bZ95TRqOWaMAACH5BAUKAAIALAMAAwAJAAYAAAILDBB5puwJo5zy2FsAOw==
C05FVFNDQVBFMi4wAwEAAAAh QQFCgACACwAAAAADwAPAAACL5QNmceSAeFiIFp56r0ASR08oSOV2glulqiuaRuiyozJ9Eh StR5bZ95TRqOWaMAACH5BAUKAAIALAMAAwAJAAYAAAILDBB5puwJo5zy2FsAOw==
C05FVFNDQVBFMi4wAwEAAAAh QQFCgACACwAAAAADwAPAAACL5QNmceSAeFiIFp56r0ASR08oSOV2glulqiuaRuiyozJ9Eh StR5bZ95TRqOWaMAACH5BAUKAAIALAMAAwAJAAYAAAILDBB5puwJo5zy2FsAOw==
 
Zurück
Oben