Gast
2010-07-02, 22:42:42
Hallo!
Schreibe gerade an einem mathematisch angehauchten Projekt und stehe nun vor der Aufgabe, mathematische Ausdrücke mit den 4 Grundrechenarten zu parsen. Einfaches Beispiel: (4+3)*5
Habe etwas recherchiert wie man sowas macht und bin dann auf die inverse polnische Notation gestoßen. Wenn man diese einmal hat, so braucht man ja nur noch einen Stack und die Sache ist gegessen.
Haltet ihr die IPN/UPN für ein gutes Mittel?
Mein Problem: ich dachte, ich hätte die UPN verstanden...
(4+3)*5 wären ja 4 3 + 5 *
Da pushe ich 4 und 3 auf meinen Stack, führe beim + die Addition mit 2 mal pop als Operanden durch und pushe das Ergebnis wieder auf den Stack, pushe die 5 drauf, poppe beim * 2 mal und multipliziere, Ergebnis auf den Stack und fertig.
Exakt solch ein Term ist das Standardbeispiel im Netz für die UPN, schon mehrmals gesehen - erst ne Klammer mit Addition drin und danach ne Multiplikation.
Wie würde die Notation aber bei 5*(4+3) aussehen? 5 4 * 3 + wird es ja nicht sein, sonst funktioniert Punkt vor Strich nicht...
Falls der Weg über Stack und UPN ein probates Mittel ist: die Hauptschwierigkeit ist dann wohl, die UPN überhaupt notiert zu bekommen. Gibt es da ein Schema, welches sich einfach erklären lässt?
Danke!
Schreibe gerade an einem mathematisch angehauchten Projekt und stehe nun vor der Aufgabe, mathematische Ausdrücke mit den 4 Grundrechenarten zu parsen. Einfaches Beispiel: (4+3)*5
Habe etwas recherchiert wie man sowas macht und bin dann auf die inverse polnische Notation gestoßen. Wenn man diese einmal hat, so braucht man ja nur noch einen Stack und die Sache ist gegessen.
Haltet ihr die IPN/UPN für ein gutes Mittel?
Mein Problem: ich dachte, ich hätte die UPN verstanden...
(4+3)*5 wären ja 4 3 + 5 *
Da pushe ich 4 und 3 auf meinen Stack, führe beim + die Addition mit 2 mal pop als Operanden durch und pushe das Ergebnis wieder auf den Stack, pushe die 5 drauf, poppe beim * 2 mal und multipliziere, Ergebnis auf den Stack und fertig.
Exakt solch ein Term ist das Standardbeispiel im Netz für die UPN, schon mehrmals gesehen - erst ne Klammer mit Addition drin und danach ne Multiplikation.
Wie würde die Notation aber bei 5*(4+3) aussehen? 5 4 * 3 + wird es ja nicht sein, sonst funktioniert Punkt vor Strich nicht...
Falls der Weg über Stack und UPN ein probates Mittel ist: die Hauptschwierigkeit ist dann wohl, die UPN überhaupt notiert zu bekommen. Gibt es da ein Schema, welches sich einfach erklären lässt?
Danke!