logische ausdrücke
-
hallo zusammen!
habe ein problem, ich muss als studienleistung ein programm schreiben mit
folgender aufgabenstellung:
--------------------------------------------------------------------------------------------------------------------------
Berechnung des Werts eines logischen AusdrucksEingabe (in Hauptprogramm):
Wahrheitswerte Wahr/Falsch in der Form W,w,F oder f
Verknüpfungszeichen:
- Und (Zeichen *),
- inklusives Oder (Zeichen +)
- exklusives Oder (Zeichenfolge xor, XOR oder auch Mischung
Klein-/Großbuchstaben)Behandlung mit folgender Hierarchie:
*/xor höher als + (die beiden Operatoren * und xor in gleicher Vorrangstufe,
d.h. Abarbeitung von links nach rechts)Leerzeichen beliebig (auch innerhalb xor)
max. Länge etwa 80 Zeichen (Eingabe als eine Zeichenkette), innerhalb dieser
Länge beliebig viele Operatoren und zugehörige Operanden.Gesatprogramm als Schleife; Ende bei Eingabe eines $-Zeichens.
----------------------------------------------------------------------------------------------------------------------------
ich bin noch nicht sehr lange mit c++ vertraut, habe das was ich machen muss
etwa so verstanden:
man hat ein programm in dem man eine zeichenkette eingeben kann z.B.:
W+f*wXoRF+F*F. Das Programm soll
dann Ausgeben entweder F oder W.(??)in c++ entspricht das "und" dem "&&", das inklusive Oder "||" , das
exklusive Oder " ^ ". wie bekomm ich das hin,
dass wenn jemand * eingibt das Programm weiß das && gemeint ist? wie kann
man dies dem programm sagen?
soweit erstmal, hoffe es kann mir jemand helfen....mfg eberhard janssen
-
Hallo,
ich würde die Eingabe erstmal in eine CNF transformieren. Dann daraus einen Vektor von Klauseln erzeugen und schließlich einen ganz simplen DPLL-Algo drüberlaufen lassen.
Suchwörter in Google: SAT, CNF, DPLL + SAT.Ansonsten wäre es schön, wenn du uns erstmal deine Ansätze zeigen würdest. Komplette Hausaufgaben machen wir hier nämlich nicht.