Ausdruck von Infix- in Prefixnotation umwandeln?
-
hallo,
anhand welcher "regeln", wandelt man ausdrücker der infix-notation in die prefix notation um?von infix nach postfix sollte es ja mit diesen regeln funktionieren (kellerautomat):
- das oberste symbol wird entkellert wenn eingabegewicht <= gewicht des letzten gekellerten symbols
- das '(' wird stets gekellert, es beginnt im keller ein unterkeller
- ein ')' wird nicht gekellert, es löscht ein '(', unterkeller wird entkellert
- variablen/werte werden nicht gekellert
wie kann man nun die regeln formulieren, um infix- in postfixausdrücke umzuwandeln?
viele grüße, cypoc
-
lustiger trick aus der zeit, als wir noch holzdisketten benutzen:
du ordnest allen operatoren prioritäten zu.
+ 1
- 1
* 2
/ 2
^ 3dann malste unter den string lauter grösser- und kleiner-zeichen zwischen die operatoren für jeden sprung eins. bei nem sprumn um 2 prioritäten halt 2. die außenwelt zähle ich mal als prio 0.
2 + 3 * 4 - 2 * 5 ^ 6 < < > < < >>>
noch aus den <> nette () machen und ( immer links von die zahl und ) recht davon reinmachen.
(2 + (3 * 4) - (2 * (5 ^ 6)))
nu isser fein geklammert und relativ leicht in andere notationen umzuwandeln.
-
-
interpreter schrieb:
http://www.cs.rochester.edu/u/www/u/pawlicki/LECTURE25/sld040.htm
der link ist cool, allerdings beschreibt er wie man infix in postfix umwandelt, dass weiß ich "leider" schon.
aber trotzdem danke an dich und an volkard
cypoc
-
cypoc schrieb:
der link ist cool, allerdings beschreibt er wie man infix in postfix umwandelt, dass weiß ich "leider" schon.
was?
dann haste das problem doch bereits gelöst.denn postfix in prefix ist so einfach, das kannste sicher in 2 stunden schreiben (oder in 15 min, wenn du nicht erst herausdfinden musst, wie).
-
volkard schrieb:
was?
dann haste das problem doch bereits gelöst.denn postfix in prefix ist so einfach, das kannste sicher in 2 stunden schreiben (oder in 15 min, wenn du nicht erst herausdfinden musst, wie).
jupp, du hast recht! postfix nach prefix ist um einiges einfacher, das "sieht" man ja fast. muss es jetzt nur noch umsetzen.
also vielen dank an euch beide.
ach ja: dieser link ist auch ganz nützlich für diejenigen, die nicht selbst hand anlegen wollen: http://www.funducode.com/freec/datastructure/datastruct5.htm
ciao, cypoc