string mit double ausrechnen



  • Hi,

    Ich habe mir gestern ein Buch über C++ geholt und heute mal versucht ein eigenen Taschenrechner in C++ zu schreiben. Ich hab auch schon ein wenig Erfahrung mit Java, doch irgendwie komm ich jetzt nicht weiter. 😞

    // Taschenrechner
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    string ergebnis;
    
    cout << "Bitte tippen Sie ihre Funktion ein:" << endl;
    cin >> ergebnis;
    
    double ergebnis2 = atof(ergebnis.data());
    
    cout << ergebnis2 << endl;
    return 0;
    }
    

    Bei "ergebnis" soll man sowas wie 5+5*5 eingeben können und das rechnet er dann aus. Ich dachte mir, wenn man

    double x = 5+5*5;
    

    schreiben kann auch

    string x = "5+5*5";
    double y = atof(x.data());
    

    machen kann.das atof(x.data()) habe ich bei google gefunden.
    Doch leider gibt er mir nur das aus:

    Bitte tippen Sie ihre Funktion ein:
    5+5*5
    5
    

    Für euch dürfte das doch sicher kein Problem sein 😉

    mfg
    betaros

    ps: Das ist mein erster Post 😮



  • betaros schrieb:

    Für euch dürfte das doch sicher kein Problem sein 😉

    Hallo betaros,
    das ist schwieriger als Du vielleicht denkst. Leichter ist es einen Taschenrechner zu schreiben, der mit der polnischen Notation arbeitet. Schau Dir dazu mal diesen Thread an.
    Hier ist ein Artikel über die Auswertung mathematischer Terme; vielleicht ist der hilfreich.

    Gruß
    Werner


  • Administrator

    atof macht nichts anderes, als aus einem String einen Double zu machen. Wie bei Java Double.valueOf(..) .
    Was du willst ist ein Parser mit Interpreter, das musst du dir schon selber basteln oder nach einer entsprechenden Bibliothek suchen.

    Zudem würde ich nicht std::string.data() sondern std::string.c_str() für sowas verwenden.
    C und C++ Referenz (zumindest teilweise) findest du hier:
    www.cplusplus.com/reference/

    Grüssli



  • Moin,

    Danke für die schnelle Hilfe.

    Dann brauch ich wohl ein Parser mit Interpreter. Also ich hab jetzt das inet durchgegoogelt und muss sagen, dass ich genauso schlau bin wie vorher 😕

    Ich weiß da leider gar nicht mehr weiter. Nach Bibliotheken hab ich auch gesucht...erfolglos 😞

    Wie würdet ihr den denn coden???

    mfg
    betaros



  • Gib mal in der Forums-Suche den Begriff "Taschenrechner" ein. Trefferwahrscheinlichkeit ist mindestens 100%. 😉


Anmelden zum Antworten