Problem mit prefix notation

  • Hallo.
    Ich habe ein Programm in Java geschrieben, was eine prefix rechnung in einen binary tree einfügt, und dann ausrechnet.
    Mein Problem ist, wie bekomme ich die infix notation in prefix?
    vielen dank.

  • Ich glaub, das ist nicht gemeint.
    Allerdings nicht verwunderlich, ist recht unpräzise formuliert.

    Meine Interpretation:
    Gegeben: Ausdruck in Infix Notation + Java Program, daß mit Ausdrücke in Prefix einliest. (und dann auswertet)
    Geht dann natürlich nicht so einfach.

    Aber befor' ich mir auf Verdacht die Finger wund schreib' würd ich gern wissen ob meine Vermutung richtig ist.

    Mfg, LB


    Trading for a living [equities,futures,forex]

  • Also. Was ich bis jetzt programmiert habe ist ein programm, was eine prefix notation in einen baum einfügt, und dann den baum in postorder scannt. Die postorder notation wird dann mit Hilfe von stacks ausgerechnet.
    Ich will nun aber, dass ein user die rechenaufgabe in infix eingeben kann. nun brauche ich eine class, die infix in prefix umwandelt.
    vielen dank.
    jenny

  • Ok, wie muß der Infix Ausdruck ausehen ?

    Wenn volle Klammerung genügt/vorausgesetzt wird, ists recht trivial.
    Falls Klammern optional sind und/oder die Operaten (*,/,+- nehm ich mal an) unterschiedliche Prioritäten haben soll wirds schon schwieriger.


    Trading for a living [equities,futures,forex]

  • die gleichung soll so aussehen:

    ((2-3)*(2+0))-((8*9)-(1+2))

    (1-3)+(8*8)

    etc
    also immer 2 paare.
    so möchte ich zumindest mal ananfangen, weil das leichter ist. später möchte ich dann komplexere gleichungen convertieren: (2-3)*2/(2*1-4)

  • hier ist ein stack basierender Standard Algorithmus dafür beschrieben.
    Unäre Operatoren müssen extra behandelt werden.
    Und es ist infix to postfix, aber das auf prefix zu ändern ist sehr einfach.

    Mfg, LB


    Trading for a living [equities,futures,forex]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!