You are not logged in.

  • Login

1

Friday, December 7th 2007, 2:25pm

string zu rechnung

So, hab ma wieder nen kleines problem:

Ich will in einem programm sowas wie "0.3*x*x+3*x+4" eingeben, und will das der mir das dann ausrechnet, bzw ich will davon einen graphen haben
Ich habe allerdings keine ahnung wie sich das umsätzen ließe.
Gibts da evtl was zum includen? tolle funktionen?
Ich bin auch schon für anregungen dankbar!

so, schonmal danke im vorraus, hoffe ich hab mich nicht zu kurz ausgedrückt.

-pocky-

ps.: es gibt nur EINE variable

2

Friday, December 7th 2007, 3:54pm

Ich denke da wirst du wohl alles auseinander nehmen müssen. Soeine Art Parser schreiben und die Eingabe so auswerten.

3

Friday, December 7th 2007, 3:55pm

Wenn du etwas fertiges suchst, das du »nur noch« verwenden musst, such mal nach flex bzw. lex ;)

Alternativ:

boost::spirit

4

Friday, December 7th 2007, 3:55pm

Wenn du es ganz sauber machen willst, verwendest du lex und yacc -> siehe Google.
Wenn das Overkill ist, muss du Zeichen für Zeichen durchgehen, und zuerst eine Liste der Tokens (Zahl, Variable und Operator) erstellen.
Anschließend musst du die Liste unter Beachtung der Operator-Präzedenz (* vor +) in einen Baum umwandeln.

5

Friday, December 7th 2007, 4:17pm

Wenn du es ganz sauber machen willst, verwendest du lex und yacc -> siehe Google.
Wenn das Overkill ist, muss du Zeichen für Zeichen durchgehen, und zuerst eine Liste der Tokens (Zahl, Variable und Operator) erstellen.
Anschließend musst du die Liste unter Beachtung der Operator-Präzedenz (* vor +) in einen Baum umwandeln.


YACC ist gar nicht nötig, (f)lex reicht da schon völlig aus ;)

Selber schreiben würde ich das nicht (jedenfalls wenn man schon grundlegende Ahnung von regulären Ausdrücken hat), mit flex ist das in 10Zeilen erledigt

6

Friday, December 7th 2007, 10:02pm

Fürs selber schreiben: Es geht am besten wenn man das in Prefix-Notation transformierst (Umgekehrte Polnisch Notation). Sonst bekommst du nachher Probleme mit den Vorrangregeln (besonders bei Klammerschachtelungen)

7

Sunday, December 9th 2007, 2:26pm

hi,

schau dir mal das an C++ Taschenrechner

da hatte ich nen Parser für Grundfunktionen der über einen String funktioniert ;) klammern kann er auch

mfg

Similar threads

Social bookmarks