Aritmetikai kifejezések kiértékelése kapcsán közismert a lengyelforma. Elevenítsük fel a (postfix) lengyel formában adott aritmetikai kifejezés kiértékelésének algoritmusát. Az algoritmus lényege, hogy a lengyelformában adott kifejezést szekvenciálisan olvasva, amennyiben operandust olvasunk, bedobjuk a veremben, ha operátort olvasunk, kivesszük a verem tetején lévő két operandust és a műveletet elvégezve, az eredményt visszadobjuk a verembe.
Legyen a magyarforma is az aritmetikai kifejezések kiértékelésére használt felírási módok egyike. A magyarforma definícióját adjuk meg a kiértékelésének algoritmusával. Az algoritmus lényege legyen ugyan az, mint a lengyelforma esetén, csak a verem helyett használjunk sort. Tehát a magyarformában adott kifejezést szekvenciálisan olvasva, amennyiben operandust olvasunk, berakjuk a sorba (végére), ha operátort olvasunk, kivesszük a sor elején lévő két operandust és a műveletet elvégezve, az eredményt visszarakjuk a sorba (végére).
Feladat:
Adott egy kifejezés "hétköznapi" (infix-es) alakban. Értékeljük ki a kifejezést magyarforma használatával.
Bemenet:
A bemenet egy-egy sora egy-egy aritmetikai kifejezést tartalmaz "hétköznapi" (infix-es) alakban. A kifejezések a következő elemekből állnak:
ˇ operandusok: pozitív egészszám konstansok
ˇ kétoperandusú operátorok: +,-,*,/,^ (hatványozás)
ˇ zárójelek: ( )
Kimenet:
Minden egyes kifejezésre adjuk meg a kifejezés értékét, továbbá a kifejezés magyarformájú alakját.
(Nagy Tibor)