Suche Parser für mathematische Ausdrücke
-
Jo die Namen von solch Parsern brauch ich, für ne bessere Suche bei Google, wenn ich nur mathe Parser oder Ähnliches suche, find ich da nix brauchbares.
Trotzdem danke schon mal.
Gruß Tobi.
-
Hmm, wenn ich dein C Code zu C++ umdichten soll, muss ich da jeder Funktion noch nen Typ zuweisen?, weil die da garkeine Typangaben gemacht wurden? aber die Funktionen Returnwerte besitzen.
außerdem was mach ich mit den "$" ???Gruß Tobi.
-
muParser ist ein sehr toller parser, kann alles von deinen anforderungen, bis auf den Limes (der auch nicht da rein passt...).
Ansonsten bei google einfach mal c++ math parser library eingeben, kommen noch andere
-
Also das Ding wär ja schon optimal, sind alle mathematischen Ausdruecke die ich brauche abgedeckt, aber das ganze Ding zu ner C++ Variante umzuschreiben Funktioniert irgendwie nicht ...
-
welches ding, die ee.c und ee.h? die würd ich nich nehmen, is sicher nich so elegant wie ein ordnetliches c++-teil.
-
T0bi schrieb:
... muss ich da jeder Funktion noch nen Typ zuweisen?, weil die da garkeine Typangaben gemacht wurden?
aber die Funktionen Returnwerte besitzen.
..welche denn z.b. ? oder verwechselst du jetzt macros mit funktionen
T0bi schrieb:
außerdem was mach ich mit den "$" ???
die sind doch innerhalb von #ifdef VAX
und dürften deinen compiler kaum jucken.T0bi schrieb:
Also das Ding wär ja schon optimal, sind alle mathematischen Ausdruecke die ich brauche abgedeckt, aber das ganze Ding zu ner C++ Variante umzuschreiben Funktioniert irgendwie nicht ...
wisonicht
-
Ich finde, das sollte in die FAQ. Und mein Vorschlag lautet http://www.ginac.de . C++, kein C.
-
@Umschreibär: Weil wenn ich das durch mein Compiler jage, da 1000Warnings und Errors kommen.
Ich hab auch mal uCalc ausprobier, das scheint aber MFC Zeugs zu sein? Ich brauch aba reine WinApi.
-
Also in den Beispielen zu boost::spirit ist auch ein kompletter Calculator dabei. Der kann imho +-*/(). Evtl. auch mehr.
Und im Repository finden sich einige mehr:
http://spirit.sourceforge.net/repository/applications/show_contents.php
-
Das Problem, das ich habe ist denke ich einfach nur das:
*- Ich lade mir so eine fertige library runter bzw son Parser und werde von Millionen von .h und .cpp erschlagen so das ich nachher ganr net mehr weiß welche ich davon brauche bzw. wie ich die ueberhaupt verwenden soll
- Ich mich mit den Initialisierungen nicht anfreunden kann. Irgendwie soll da eine Funktion definiert werden und Variablen und blabla...
*ich will doch einfach nur ne Funktion wo ich nen Parameter sowas hier übergeben kann "5x^2+(3/5)x-3a" und wo ich evtl. noch methoden hab die Parameter einzustellen. Doch statt dessen bekommt man da 1000nde von Methode ...
Es sollte schon irgendwo simpel gehalten sein.
Gruß Tobi.
-
T0bi schrieb:
ich will doch einfach nur ne Funktion wo ich nen Parameter sowas hier übergeben kann "5x^2+(3/5)x-3a" und wo ich evtl. noch methoden hab die Parameter einzustellen.
Und was soll sie zurückgeben?
-
T0bi schrieb:
Hmm, wenn ich dein C Code zu C++ umdichten soll, muss ich da jeder Funktion noch nen Typ zuweisen?
Das ist nicht mein Code.
Bei meinem findest du z.B. keine globalen Variablen, das ganze ist eigentlich recht C++ freundlich gestaltet.
Kann ich dir mailen, wenn du ne Emailadresse postest.
-
@Bashar eine Zahl?
Gruß Tobi.
-
Das Installieren der Bibliotheken kann dir leider keiner abnehmen. Aber danach ist es inder Regel mit dem Lesen der Dokumentation schon fast getan. Beispiel GiNaC:
#include <ginac/ginac.h> using namespace GiNaC; double foo(double x_value, double a_value) { symbol x("x"); symbol a("a"); ex term("5x^2+(3/5)x-3a", lst(x, a) ); double value = ex_to<numeric>(term.subs(lst(x == x_value, a == a_value).evalf()).to_double(); return value; }
-
Das sagt mein Compiler:
1>------ Build started: Project: MAthe, Configuration: Debug Win32 ------ 1>Compiling... 1>stdafx.cpp 1>c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\ptr.h(58) : warning C4099: 'std::less<GiNaC::ptr<T>>' : type name first seen using 'struct' now seen using 'class' 1> c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\ptr.h(150) : see reference to class template instantiation 'GiNaC::ptr<T>' being compiled 1>c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\print.h(266) : warning C4800: 'GiNaC::print_functor_impl *' : forcing value to bool 'true' or 'false' (performance warning) 1>c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\ptr.h(58) : warning C4099: 'std::less<_Ty>' : type name first seen using 'struct' now seen using 'class' 1> with 1> [ 1> _Ty=GiNaC::ptr<GiNaC::basic> 1> ] 1> c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\ex.h(245) : see reference to class template instantiation 'GiNaC::ptr<T>' being compiled 1> with 1> [ 1> T=GiNaC::basic 1> ] 1>c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\ex.h(672) : warning C4099: 'GiNaC::ex_is_less' : type name first seen using 'class' now seen using 'struct' 1> c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\basic.h(41) : see declaration of 'GiNaC::ex_is_less' 1>c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\mathe\mathe\ginac\numeric.h(32) : fatal error C1083: Cannot open include file: 'cln/complex.h': No such file or directory 1>MAthe - 1 error(s), 4 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
-
Hm,
Also nach langem "Hin und Her", denke ich bleib ich beim muParser. Ich find es zwar etwas umständlich alle Header zum Projekt zu includen und die ganzen .cpp Datein. aber wnigstens komme ich so zum Ziel.Danke für eure Hilfe.
Gruß Tobi.
-
T0bi schrieb:
@Bashar eine Zahl?
Dann ist jetzt auch klar, wieso du sowas nicht findest. Weil es eine spezielle Spielzeuganwendung ist, die eigentlich niemand braucht. Sowas macht man als einführende Übung, wenn man sich mit Parsergeneratoren beschäftigt. Parser(-frameworks), die du irgendwo im Netz finden kannst, sind natürlich wesentlich flexibler und haben entsprechend kompliziertere Schnittstellen.
-
Ich hätte da mal noch iene Frage, ich wollte dafür jetzt nich extra einen neuen Thread auf machen. Und zwar bräuchte ich noch ne Library die Ableitungen von Funktionen ala' "f(x) = 4x³ + 3x² + 2x + 1" bewerkstelligen kann. Ich denke nicht das, dass eine einführende Aufgabe ist, oder?
Gibts sowas auch? Wüsste jetzt nicht unter was ich da googln sollte?!Gruß Tobi.
-
T0bi schrieb:
Ich denke nicht das, dass eine einführende Aufgabe ist, oder?
Polynome ableiten? Das ist ne sehr schöne Übungsaufgabe. Kann man in ein paar Minuten erledigen. Wie würdest Du denn so ein Polynom abspeichern?
-
Gespeichert wird das zuerst bei der Eingabe des Benutzers in einen String, bzw. in ein Char-Array.