Projektvorstellung: Taschenrechner/Formelrechner



  • Hey Leute,
    ich hab um meinen Umgang mit C++ zu verbessern und zu festigen mal damit begonnen einen kleinen Taschenrechner bzw Formelrechner auf Konsolenbasis zu programmieren.

    Bisher kann er "+", "-", "*" und "/" rechnen, mit beliebigen Verkettungen.

    Wollte mal hören was ihr so davon haltet und was ich besser machen könnte.
    Ich wollte als nächstes dem Benutzer die Möglichkeit geben Klammern zu nutzen, jedoch fehlt mir bisher noch ein richtiger Ansatz dafür.

    Bin mir über den jetztigen Ansatz auch noch nicht so ganz im Einklang ob der so gut ist und ob auch wirklich alles funktioniert.

    Naja hier mal der Code und die .exe, wer will kanns ja mal testen und ein Feedback geben, würde mich sehr freuen.

    http://www.file-upload.net/download-2817672/Taschenrechner.rar.html

    Schonmal vielen Dank.

    Lg freeG



  • Um das Klammerproblem zu lösen, empfehle ich die Verwendung von string aus der Standardbibliothek. Du suchst dann einfach mithilfe der string-Iteraroren (std::string::iterator) die Klammern heraus und dessen Inhalt kannst du ja in einen stringstream einlesen und in einen Datentyp umwandeln, der für diverse Rechnungen geeignet ist.

    Dein Programm gefällt mir aber ganz gut. :p

    *edit: nach weiterem Testen fällt mir auf: deine Anwendung bleibt hängen, wenn ich beispielsweise "13 + 5" eintippe. Ich weiß ja nicht, ob das so von Dir gewollt ist. Es ist klar, dass ich ein Semikolon eintippen muss, aber trotzdem solltest du diese Falscheingabe berücksichtigen.



  • Hallo fr33g,

    zum Thema "Formelparser" könntest du dir mal meine Beiträge
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1808875.html#1808875
    bzw.
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1780654.html#1780654
    anschauen.
    Weitere Stichworte zum Suchen sind "EBNF" (bzw. "BNF") sowie Top-Down-Parser.

    Somit sollte dann die Klammern-Auswertung kein Problem mehr darstellen...



  • Ich kann deine Release-Datei irgendwie nicht öffnen.



  • Vielen Dank erst mal für die Tipps.
    Das mit dem fehlenden Semikolon hab ich gefixxt.
    Auch hab ich jetzt den Parser ein bisschen umgebaut und die Klammerung eingabaut.

    @The69:
    Danke für deine Links, das werd ich mir mal noch durchlesen und mich eventuell dran versuchen, wobei ich erst mal froh bin dass meins läuft=)

    @Minispiri:
    Mh wüsst grad net warums net gehen sollte, vielleicht gehts bei der neueren Version. Was kommt den für ein Fehler?

    Hier mal die neue Version:

    http://www.file-upload.net/download-2819253/Taschenrechner.rar.html

    Würde mich weiterhin über Feedback, Tipps und Verbesserungsvorschläge und eventuelle Bugs und Erweiterungsmöglichkeiten freuen=)

    Danke schonmal für die Unterstüztung 🙂

    Lg freeG



  • Bei mir fehlt beim Starten von Release/Debug Version die MSVCP100.dll.

    Nur zur Info 😉



  • Dann fehlt dir das "C++ Redistributable Package".
    Für x86 (32bit) wäre dies: http://www.microsoft.com/downloads/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84&displayLang=de



  • Hats nochmal jemand geladen und getestet und hat ein Feedback für mich 😋 ?

    Lg freeG



  • Hi,

    zu gute halten muß man dir, daß du wenigstens konsequent C++ programmierst (STL, Klassen, Vererbung etc.). Dein Parser als solches ist jedoch noch sehr fehlerhaft. Er erkennt weder das unäre Minus bzw. Plus sowie Klammerausdrücke werden falsch berechnet, z.B. "(1 + 2) * (3 + 4);" Ergebnis: 8 -)

    Einen Parser für math. Ausdrücke ist gar nicht so einfach zu schreiben, daher habe ich ja auch meine 2 Versionen (C++ sowie C# inkl. Artikel) ins Internet gestellt, damit die Leute endlich mit dem String-Gefrickel aufhören 😃



  • Hey erst mal Danke für das Lob 😋

    Ja ich probiere auch immer konsequent modernes C++ bzw einfach C++ und nicht so einen Misch-Masch mit C zu programmieren=)
    War gar nicht mal so leicht nach dem C++ in 21 Tagen-Dreck:D:D, aber der C++-Primer und das Forum haben mir da schon stark geholfen 😉

    Ja deine Parser schau ich mir morgen nach der Schule mal an und setz den vielleicht dann ein, wollt halt mal probieren sowas selber zu machen, ist aber schon heftig schwer.

    Und danke fürs Feedback=)

    Lg freeG


Anmelden zum Antworten