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:

Code: Alles auswählen

if s >= 0 and s <= 15
  t=s
endif

Verfasst: 18.04.2007 19:57
von jear
... oder

Code: Alles auswählen

S = T * (T >= 0 And T <= 15)

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

Code: Alles auswählen

S = T * (T >= 0 And T <= 15)
Bohr, immer diese Leute, die alles in eine Zeile kriegen müssen, da platzt mir der Kragen...



... :roll: ... :lol:

Verfasst: 18.04.2007 20:54
von Kaeru Gaman
@AND
:lol: 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 :lol:

Code: Alles auswählen

Select s : Case 0 To 15 : t = s : EndSelect

Verfasst: 19.04.2007 13:36
von AND51
Danke! :lol: 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