logische ausdrücke



  • hallo zusammen!

    habe ein problem, ich muss als studienleistung ein programm schreiben mit
    folgender aufgabenstellung:
    --------------------------------------------------------------------------------------------------------------------------
    Berechnung des Werts eines logischen Ausdrucks

    Eingabe (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.


Anmelden zum Antworten