Boolische Algebra

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Daniel Knobe

Betreff: Boolische Algebra

BeitragMo, Jan 30, 2006 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
folgende Funktion:
a AND (NOT(b AND c))
Sie wird über eine Eingabe, in B3D als String gespeichert.
Nun kann ihc damit aber mathematisch nicht weiter verfahren -_-

wie kann ich wenn ich z.b.
a=1
b=0
c=1
ist, das er mir das ausrechnet?

mfg

Jan_

Ehemaliger Admin

BeitragMo, Jan 30, 2006 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
in der Hoffnung es richtig verstanden zu haben,

Code: [AUSKLAPPEN]
a$=Input$("a=")
b$=Input$("b=")
c$=Input$("c=")

RuntimeError Int(a) And (Not(Int(b) And Int(c)))

int formt einen String seine Zeichen in die Wiederzugebende Integer Zahl um.[/code]
between angels and insects
 

Daniel Knobe

BeitragMo, Jan 30, 2006 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee^^,
Also,
folgender String:
"a AND (NOT(b AND c)) " ist gespeichert in Funktion$:
Funktion$="a AND (NOT(b AND c))"

Nun möchte ich aber das ich damit rechnen kann.
Ich habe folgende Variablen:
a=1
b=0
c=0

Die Funktion ist deshalb in einem String, da sie von einem User per Input eingetippt wird. Ich will ein Programm für Warheitstabellen schreiben, weiß aber nicht wie ich es umsetzen soll.
 

Ava

Gast

BeitragMo, Jan 30, 2006 17:13
Antworten mit Zitat
Du musst den String halt aufwendig auseinander basteln und die entsprechenden Anweisung dann auswerten und berechnen.

SpionAtom

BeitragMo, Jan 30, 2006 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Rein zufälligerweise hatten wir etwas ähnliches in unserer Modellierunghausaufgabe:

Mit dieser Grammatik kann man einen Ausdruck überprüfen, ob er ein korrekt geschriebener boolscher Ausdruck ist:

G = (T, N, P, S)
T = {A, B, (, ), NOT, AND, OR, 1, 0}
N = {X}
S = X
P = { X ::= (X)
X ::= A | B | 0 | 1
X ::= NOT X
X ::= X OR A | X OR B | X OR 1 | X OR 0
X ::= X AND A | X AND B | X AND 1 | X AND 0
}

Jetzt muss man sich nur noch mit Grammatiken auskennen. Wink

Jan_

Ehemaliger Admin

BeitragDi, Jan 31, 2006 8:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha, das ergibt sinn!
Du musst eine Scriptengine schreiben!

suche würde auch helfen.
falls du über Bmax verfügst, nimmt die arbeit die die Lua engine ab.
between angels and insects

Xaron

BeitragDi, Jan 31, 2006 9:45
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Mit dieser Grammatik kann man einen Ausdruck überprüfen, ob er ein korrekt geschriebener boolscher Ausdruck ist:...


Das mag ja sein, geht aber völlig an der Fragestellung vorbei. Wink Was er möchte, ist ein Parser, wie Jan schon anmerkte.

Gruß - Xaron
Cerberus X - Monkey X Reloaded!

SpionAtom

BeitragDi, Jan 31, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Xaron hat Folgendes geschrieben:
SpionAtom hat Folgendes geschrieben:
Mit dieser Grammatik kann man einen Ausdruck überprüfen, ob er ein korrekt geschriebener boolscher Ausdruck ist:...


Das mag ja sein, geht aber völlig an der Fragestellung vorbei. Wink Was er möchte, ist ein Parser, wie Jan schon anmerkte.

Gruß - Xaron


Und gerade eine Grammatik ist so eine Art Parser. Eine Grammatik prüft, ob ein Satz (hier der boolsche Ausdruck) zu einer bestimmten Sprache gehört (hier die Sprache der korrekten boolschen Terme).

D2006

Administrator

BeitragDi, Jan 31, 2006 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Grammatiken sind Theorien und Konzepte. Helfen vielleicht ein wenig beim erstellen des entsprechenden Algorithmus, aber beantworten die Frage nur unzureichend.

Wenn man einmal Grammatiken verstanden hat, ist dass ja sowieso nicht so schwer zu entwickeln für dieses Thema. Die Umsetzung ist ein wenig komplizierter und jetzt hier gefragt.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

SpionAtom

BeitragDi, Jan 31, 2006 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein einfacher Parser:

Code: [AUSKLAPPEN]

;$ - AND
;| - OR
;- - NOT
ausdruck$ = "((A&B)|0)&(-1"

Type produktionen
   Field von$
   Field nach$
End Type
S$ = "X"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "(X)"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "A"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "B"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "0"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "1"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "-X"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "X|X"
P.Produktionen = New Produktionen:   P\von$ = "X":   P\nach$ = "X&X"

   tmp$ = ausdruck$
   Repeat
      such = 0
      For P.Produktionen = Each Produktionen      
         If Instr(tmp$, P\nach) > 0 Then
            tmp$ = Replace$(tmp$, P\nach, p\von)
            such = 1   
         End If      
               
      Next
   Until tmp$ = S$ Or such = 0
   
   Print ausdruck$
   If tmp$ = S$ Then
      Print "Dieser Ausdruck ist korrekt!"
   Else
      Print "Dieser Ausdruck ist falsch!"
   End If

WaitKey      
End

Xaron

BeitragDi, Jan 31, 2006 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Und gerade eine Grammatik ist so eine Art Parser.


Nein. Wink Bei einer Grammatik geht es um Regeln. Dem Threadersteller ging es nicht darum, ob es sich um einen korrekt geschriebenen Ausdruck handelt. Er wollte einfach eine Wertetabelle für eine variable boolsche Funktion, dafür braucht man halt einen Parser.

Gruß - Xaron
Cerberus X - Monkey X Reloaded!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group