Seite 1 von 3
vereinfachen von if funktionen
Verfasst: 18.04.2007 19:08
von Gn00bi
Code: Alles auswählen
If s=0
t=0
ElseIf s=1
t=1
ElseIf s=2
t=2
ElseIf s=3
t=3
ElseIf s=4
t=4
ElseIf s=5
t=5
ElseIf s=6
t=6
ElseIf s=7
t=7
ElseIf s=8
t=8
ElseIf s=9
t=9
ElseIf s=10
t=10
ElseIf s=11
t=11
ElseIf s=12
t=12
ElseIf s=13
t=13
ElseIf s=14
t=14
ElseIf s=15
t=15
EndIf
wie kann ich das ganze vereinfachen
thx schonmal
Verfasst: 18.04.2007 19:09
von a14xerus
Und wenns nur zwischen 0 und 15 sein darf:
Verfasst: 18.04.2007 19:57
von jear
Verfasst: 18.04.2007 20:03
von Kaeru Gaman
@jear
nein, so nicht!
Boole'sche Ausdrücke werden in PB nativ nicht unterstützt.
...hatten wir doch schon oft genug, nicht?
Verfasst: 18.04.2007 20:50
von AND51
jear hat geschrieben:... oder
Bohr, immer diese Leute, die alles in eine Zeile kriegen müssen, da platzt mir der Kragen...
...

...

Verfasst: 18.04.2007 20:54
von Kaeru Gaman
@AND

soso
@Gn00bi
haben dir die ansätze was geholfen?
oder was willst du genau machen?
Verfasst: 18.04.2007 21:26
von Gn00bi
hm ja danke habt mir schon geholfen hab da irgendwie viel zu kompliziert gedacht bei der sache!
Verfasst: 19.04.2007 01:26
von ts-soft
Für AND51 noch die extrem langsame Variante
Verfasst: 19.04.2007 13:36
von AND51
Danke!

Du hast aber den Vermekr vergessen: "So soll man's
nicht machen..."
Verfasst: 22.04.2007 13:33
von jear
PB-Hilfe hat geschrieben:Spezielle Informationen zur Verwendbarkeit logischer Ausdrücke
Logische Ausdrücke (z.B. "Position < 100") können uneingeschränkt mit Befehlen verwendet werden, die logische Ausdrücke erwarten (z.B. If, While, Until) sowie in Kombination mit logischen Operatoren (And, Or, XOr, Not).
In der vorliegenden PureBasic-Version liefern die Rückgabewerte der Vergleichsoperatoren (<, <=, =, >=, >, <>) Ergebnisse, die z.B. in Kombination mit mathematischen Ausdrücken zu unerwarteten Resultaten führen können. Verwenden Sie in solchen Fällen zusätzlich einen der Operatoren And, Or oder Not, um korrekte Ergebnisse zu erzielen.
Beispiel:
Counter = 0 : A = 20 : B = 20
Counter + (A=B) ; Counter wird um den Wert B erhöht (unabhängig vom Vergleichsergebnis)
Counter + (0 Or (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Counter + (1 And (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Counter + (Not Not (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Sie können den zusätzlich benötigten Operator auch von einem Makro erstellen lassen.
Beispiel:
Macro Is(Bool)
(0 Or (Bool))
EndMacro
Counter = 0 : A = 20 : B = 20
Counter + Is(A=B) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt