Wie wandle ich String( "12 + 3 - 5 * 2 / 1 +20" ), in eine ausführbare Rechengleichung um?
-
moin, ich glaube die frage oben sagt schon alles, ich will per eingabe in einen string eine matheaufgabe entgegen nehmen und diese dann so umformen und si in eine (int, float, long ... ) var stecken so das ich das ergebnis zB per
cout << var << endl; ausgeben kann. wie kann ich das machen?Gruß Tobi :xmas1:
-
Stichwort: Parser. Du könntest dir z.B. boost::spirit holen und dann eine Grammatik für mathematische Formeln aufbauen - der übergibst du diesen String und erhältst am Ende einen Wert raus.
-
Indem du einen Parsebaum aufbaust und dann entweder In-Time, oder verzögert evaluierst.
Du könntest boost::spirit verwenden, jedoc ist es nur für Erfahrene c++ Programmierer geeignet.
-
r0nny schrieb:
Du könntest boost::spirit verwenden, jedoc ist es nur für Erfahrene c++ Programmierer geeignet.
Klar, für einen Anfänger ist es definitiv leichter, so einen Parser von Null aus per Hand zu entwickeln
Mir sind auf jeden Fall vorgefertigte Lösungen lieber.
-
sorry die frage aber was ist ein parser???
-
Manchmal hilft auch Selberdenken.
http://de.wikipedia.org/wiki/Parser
-
Ein Parser ist ein Programm, das einen Text liest und nach bestimmten Gesichtspunkten auseinandernimmt und verarbeitet. Also genau das, was du für dein Problem benötigst

(eine ausführlichere Erklärung findest du zum Beispielhier)
-
haette vieleicht jemand nen schnipsel quelltext von so etwas damit ich mir des vllt. mal ansehen könnte?
-
Naja, ich würde LUA benutzen. http://www.lua.org
Dann braucht man nicht noch nen Parser bauen, sondern LUA übernimmt gleich alles für einen.
-
CStoll schrieb:
Klar, für einen Anfänger ist es definitiv leichter, so einen Parser von Null aus per Hand zu entwickeln

Den Smiley kannst du weglassen.
-
T0bi schrieb:
haette vieleicht jemand nen schnipsel quelltext von so etwas damit ich mir des vllt. mal ansehen könnte?
Klar: http://spirit.sourceforge.net/distrib/spirit_1_8_3/libs/spirit/doc/introduction.html
-
T0bi schrieb:
haette vieleicht jemand nen schnipsel quelltext von so etwas damit ich mir des vllt. mal ansehen könnte?
Wie wärs mit einer vorhandenen Bibliothek:
http://muparser.sourceforge.net
Beispiel:
http://muparser.sourceforge.net/mup_version.html#idExample
Doku:
http://muparser.sourceforge.net/classdocu/namespacemu.htmlMfG Maik
-
danke leute werds mir erst mal alles anschaun, bei weiteren fragen ect. werde ich diese topic noch einmal aufgreifen. bis dahin erst mal danke.
Gruß Tobi :xmas1: