Rechner, der jederzeit aufgerufen werden kann



  • Hey Leute,

    in letzter Zeit plage ich euch mit noobi Fragen und ähnlichen Dingen.
    Ich verfolge dabei aber auch ein Ziel:

    Meiner Meinung nach braucht man immer und in vielen Projekten, einen Rechner ,der mathematische Terme und Rechnungen lösen kann.

    Jedes mal dann den Code eines Taschenrechnerprogramms einzufügen und umzuschreiben wäre ja i-wie umständlich und blöd.
    Mir schwebt da was anderes vor:
    Man fügt ein "fertiges" Rechner Programmm einfach wie eine headerdatei ein und kann es dann immer benutzen. Beispiel:

    Ich habe ein Programm, dass den Nullpunkt einer Funktion ermitteln soll. Dafür setzt das Programm einfach für X null ein und muss dann die Rechnung nurr noch ausrechnen und das Ergebniss ausgeben.

    Doch das ausrechnen soll so ablaufen,dass das "hauptprogramm" einfach die komplette Rechnung an die "Rechner-Funktion" sendet und der Rückgabewert dann das richtige Ergebniss ist.

    Das wäre doch toll oder? 🙂

    Gibt es so was schon? Wie benutzt man es?



  • das ist eine Lib(rary) und die gibts zu Hauf. Google nach "c++ math library" oder ähnlichem

    greetz KN4CK3R



  • Okay, Danke....

    Ich habe da etwas über die cmath gefunden, die ich auch schon ein paar mal verwendet habe. Aber ich finde dort keine Funktion, die mir eine Rechnung/Term ausrechnet und das ergebnis zurückliefert....
    Kennt ihr da eine?



  • Golfi1812 schrieb:

    .

    <cmath> ist Teil der so genannten Stadardbibliothek. <cmath> hat keine Funktionen zum Lösen von Gleichungssystemen. Der Tipp oben hat auf Fremdbibliotheken abgezielt. Diese werden von deinem Compiler normalerweise nicht mitgeliefert und müssen erst von dir installiert, eingebunden und gelinkt werden.
    Konkret empfehlen kann ich dir allerdings keine Mathelib, vielleicht haben andere da ja mehr Erfahrung.



  • Was haltete ihr hiervon?:
    http://forums.purebasic.com/german/viewtopic.php?f=8&t=12792#

    Ist das brauchbar?



  • Was genau willst du? 😕 Die Standardfunktionen liefern alle einen berechneten Wert zurück - das ist ihr Sinn!
    Willst du aufwendigere Berechnungen als Funktion oder als separaten Prozess? 😕 Dann musst du mehr erklären.



  • Was du suchst ist ein Equation Parser für C++.
    Sowas selber zu bauen ist recht kompliziert, zumindest wenn man es gut machen will. Dein zu berechnender Term wird dabei auf einen Stack in Post-Fix Notation gelegt, das heißt aus der Gleichung

    x+3*x^2

    wird

    x 3 x ^2 * +

    Dann geht man das von links nach rechts durch und wenn man bei einem Operator ist wird das letzte (bei unären Operatoren, wie ^2, sqrt, sin, cos oder das unäre minus) bzw. die letzten beiden (bei binären Operatoren, z.b. +, -, *, /) Argumente darauf angewendet, z.b. wird das ^2 auf x angewendet, das * auf 3 und dem Ergebnis aus x ^2.

    Wenn du mal danach googelst wirst du Seiten wie das hier http://www.speqmath.com/tutorials/expression_parser_cpp/index.html finden.

    Ich hoffe, dass es das ist, was du suchst.

    Grüße

    Max



  • Golfi1812 schrieb:

    Was haltete ihr hiervon?:
    http://forums.purebasic.com/german/viewtopic.php?f=8&t=12792#

    Ist das brauchbar?

    Wenn es C++ wäre, wäre es mit Sicherheit brauchbar.
    Ansonsten als Lib kompilieren und von C++ aus aufrufen.



  • Max3000 schrieb:

    Dein zu berechnender Term wird dabei auf einen Stack in Post-Fix Notation gelegt

    Ja, das ist eine Möglichkeit.

    Max3000 schrieb:

    bei unären Operatoren, wie ^2

    WTF?



  • Danke für die Antworten.

    Also was ich möchte, ist eine Funktion(oder was auch immer), der man ein Argument als stirng liefert z.b. 2+2*2 und die Funktion rechnet dies dann korekt aus und gibt mit return das Endergebniss zurück. Das ganze in C++



  • Okay wenn ich mich nun für diese library entscheide :
    http://forums.purebasic.com/german/viewtopic.php?f=8&t=12792

    Wie binde ich sie dann in Visual studio C++ ein, dass ich sie verwenden kann?
    Ich habe sie kopiert und als Textdokument mit der Endung .lib gespeichert unter
    .....C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib

    Doch wie binde ich sie jetzt richtig im VisualStudio ein ?



  • Hallo Golfi,

    du kannst doch nicht einfach eine VB-Datei als "lib" benutzen 😕

    Ich hatte dir doch schon in deinem anderen "Nullpunkt"-Thread meinen Funktionsparser empfohlen: http://www.c-plusplus.net/forum/p2123216#2123216





  • Ich habe leider keine Ahnung wie ich diesePareser in meine Programme einbaue!

    Wie macht ihr das denn wenn ihr ein Programm schreibt, das unteranderem auch etwas ausrechnen soll. Dann schreibt ihr doch nicht extra einen neuen rechnercode da rein. Ihr bedient euch doch aus i-einer Funktion die das übernimmt. So ist es doch oder?

    Deswegen, bitte mal ein Code Beipiel oder eine Hilfe mit Beispiel, wie ich so einen Pareser richtig einfüge und verwende. Wie gesagt benutze ich Visual C++ und bin noch bei den Konsolenanwendungen.

    Hilfe bitte





  • Ich habe den muParser heruntergleaden, extrahiert und den Ordner geöffnet.
    Jetzt verstehe ich folgenden schritt nicht:

    In order to compile muParser from makefiles, open a command prompt then move to the muParser/build directory and type: •mingw32-make -fmakefile.mingw for mingw
    •nmake -fmakefile.vc for msvc
    •make -fmakefile.bcc for borland
    •wmake -fmakefile.wat for watcom
    All makefiles support the following options:
    # Set to 1 to build debug version [0,1]
    # 0 - Release
    # 1 - Debug
    DEBUG = 0

    # Set to 1 to build shared (DLL) version [0,1]
    # 0 - Static
    # 1 - DLL
    SHARED = 0

    # Set to 1 to compile samples [0,1]
    SAMPLES = 1
    The muParser library is created in the 'lib' folder and the sample binaries are created in samples\example1 or samples\example2. (You may need to copy the dll into the example2 directory in order to run it.)

    samples\example1 can be compiled *only* when building muParser as a STATIC library (SHARED=0).
    samples\example2 can be compiled *only* when building muParser as a SHARED library (SHARED=1).

    Was muss ich da machen? Bzw. was muss ich da mit der Konsole machen und was muss ich mit diesen #Set.... Befehlen machen. Wie gebe ich das alles ein?



  • Golfi1812 schrieb:

    Ich habe sie kopiert und als Textdokument mit der Endung .lib gespeichert

    Das ist nicht dein ernst, oder?

    Also zu dem muParser...

    Du lädst dir ja nur den Sourcecode runter und musst den erstmal selbst kompilieren. Makefiles sind im Prinzip nur Anleitungen für den Computer, wo drin steht, wie er ein Projekt zu kompilieren hat. Das ganze tritt bei Linux häufiger auf, in Windows braucht man sowas eher selten. Im Ordner "build" findest du das entsprechende Makefile was du brauchst (Windows und MSVC).

    Du öffnest einfach die Eingaeaufforderung und gibst folgendes ein:

    cd muparser_v2_0_0
    cd build
    nmake -fmakefile.vc
    

    Der letzte Befehl erzeugt eine Library im Unter-Ordner "lib", die du in Visual Studio auch noch einbinden musst. Dazu gehst du im Menü auf Projekt->Einstellungen und im Reiter Linker musst du diese Lib einfügen.

    Das Nächste ist die Header-Datei. Diese bindest du ja mit include in dein Programm ein, aber du musst VC noch sagen in welchem Verzeichnis er danach suchen muss. Auch das findest du in den Projekteinstellungen unter "Additional Include Directories" (oder so ähnlich). Probiers mal aus und sag an welchem Punkt es eventuell hakt. Solche Arbeiten sind manchmal sehr lästig weil ab und zu mal was nicht funktioniert wie es sollte.

    Grüße

    Max



  • Danke das hat mir geholfen, nur mit der Eingabeaufforderung klappt das nicht:

    Nach dem C:\User\.....>gebe ich folgendes ein:cd muparser\cd build\ nmake -fmakefile.vc

    Doch dann wird immer wieder ausgegeben,dass der Dateipfad nicht gefunden werden kann.

    Was mache ich falsch?



  • Okay, vergesst den dummen ***Scheiß***,den ich im vorherugen Beitrag geschrieben habe. OMG

    Ht alles soweit geklappt bis auf einen Befehl: nmake -fmakefile.vc

    da sagt er mir immer wieder, dass es den Befehl nicht gäbe.

    Was läuft da falsch?



  • Also ein bisschen Eigeninitiative wäre schon angebracht.

    Was du brauchst ist das Programm NMAKE.EXE.
    Entweder es ist bei dir schon installiert und steht nur nicht im PATH drin, oder du musst es noch runterladen.

    Dazu müsstest du mal selbst recherchieren, wie das bei deinem Betriebssystem genau funktioniert. Mehr kann ich dir leider auch nicht helfen.


Anmelden zum Antworten