Formelinterpreter - Algorithmus
-
Hy an alle!!
Ich finde es super das es so ein Forum gibt, denn ich brauche ein wenig Hilfe!
Ich muss einen Formelinterpreter programmieren, wo man in ein Textfeld seine Formel eingibt und dann das Ergebnis ausgibt.
Jetzt hät ich die Frage wie der Algorithmus für diese Funktion heißt. Es wäre sehr DRINGEND!!
Danke an alle die Helfen!
Mfg
Anyone who needs help!!P.S: Danke im vorhinein
Ihr könnt mir auch was mailen, was mich weiter bringen könnte! -> c.mair@gmx.at
-
Top-Down Parser
Bottom-Up Parser
-
Okay danke für die Hilfe!!
Aba das hilft mir nicht viel.
Mfg
Anyone who needs help
-
Erstmal musst Du in dem Zeichenstrom, also die eingegebene Formel, einzelne Symbole erkennen. D.h. Du bastelst Dir nen kleinen Scanner - oder nimmst flex.
Danach musst Du die Syntax der Formel erkennen und entsprechend darauf reagieren. Das macht dann der genannte Parser. Dazu nimm yacc bzw. bison.
Schau mal unter www.gnu.org/manual/ bei Bison ist ein kleines Beispiel für nen Taschenrechner. Also der macht ja eigentlich das gewünschte.
-
Danke für eure Hilfe!!
Aber jetzt "check" ich gar nichts mehr.
Weitere HILFE benötigt!!
Mfg
Anyone who needs help
-
Beschreib mal, wie die Formeln aussehen. Nen Besipiel am besten
Sollen Klammern verwendet werden also 5 * (10 - 159)?
Gibt es Funktionen wie sin(), cos() etc. oder gar selbst gebastelte?
-
ach, und kann man davon ausgehen, dass IMMER korrekte Formeln eingegben werden?
-
für einfache dinge reicht es oftmals ad-hoc einen top-down parser (rekursiver abstieg) zu implementieren. wenn es professionell werden soll ist es aber schon angesagt den code für einen scanner (endlicher automat) mit flex und einen bottom-up parser (kellerautomat) mit bison zu generieren. wie auch immer, erstmal solltest du dir über die syntax der formeln im klaren sein und eine Grammatik in einer für den jeweiligen Ansatz entsprechenden Form erstellen. Einen LL(1)-Parser kann man leicht selbst schreiben, ohne ein Tool verwenden zu müssen. Allerdings sollte die Grammatik vorher natürlich in eine LL(1)-Grammatik konvertiert werden, falls es nicht schon eine ist.
-
Hy Jungs!!
Art der eingabe ist z.B: sin(3x)+9*2
Ja es gibt sin cos und tan
Nein es gibt nichts eigengebautesBitte um HILFE!!
Und bitte deutliche erklärung!!
Mfg
Anyone who needs help
-
Wieviel zahlst du? Du willst ja anscheinend nicht selber denken.
-
Danke, aber ich denke selber sehr gerne!
Ich habe nur das Problem mit dem Programmieren!!
Mfg
Anyone who needs help
-
Wir hatten schon mal einen ähnlichen Thread.
Eine andere Möglichkeit wäre, Spirit einzusetzen. Da gibt es auch ein Beispiel für einen Taschenrechner (calculator). Aber sei gewarnt - Für Spirit brauchst Du einen guten Compiler; mit VC6 z.B. wird das nix.
Schau's Dir mal an und frag' dann nach Details.
Gruß
Werner
-
Das haben schon tausende Leute programmiert. So wie ich das höre programmiert fast jeder sowas in seiner Programmiererlaufbahn.
Und dementsprechend gibt es auch viele Informationen im Internet.
Hier kommt die traurige Wahrheit: Du bist nur zu faul zu suchen und zu denken.
Komm wieder wenn du konkrete Fragen hast.
-
Okay wenn das schon tausende Leute schon programmiert haben, dann zeig mir eine Code davon.
Suche schon ewig und finde gerad mal 0,0!!Also bitte, helft mir.
Brauch es wiklich dringend!!Danke!!
Mfg
Anyone who needs help
-
noone_extrem schrieb:
Okay wenn das schon tausende Leute schon programmiert haben, dann zeig mir eine Code davon.
.. lese mein Posting noch mal aufmerksam durch. Dort findest Du die Links zu immerhin zwei codierten Beispielen.
Gruß
Werner
-
noone_extrem schrieb:
Hy Jungs!!
Anyone who needs helptipp: Lass bitte das Englisch, wenn du es nicht kannst.