Taschenrechner in C
-
Hallo, ich habe diese Frage bereits in einem anderen Forum gestellt. Leider konnte man mir dort nicht richtig weiterhelfen. Ein Bekannter hat mir dann euer Forum empfohlen.
Nun mein Problem. Ich denke, dass das eigentlich gar nicht ganz so schwierig ist, leider komme ich auf keinen vernünftigen Ansatz.
Ich soll einen Taschenrechner implementieren. Dabei soll ein String mit einem mathematischen Ausdruck eingelesen werden.Beispiel:
(1+2*3.5)/4.0*sqrt(4)
Als Ergebnis soll 4.0 ausgegeben werden.
Implementiert werden sollen:
- Die vier Grundrechenarten.
- Beliebig viele Klammerebenen
- Die Funktionen sqrt(), sin() und cos().</ul>Es sollen die üblichen Rechenregeln (z.B. "Punkt vor Strich") realisiert werden.
Die Berechnung soll mit double Genauigkeit durchgeführt werden.
Als weiterer Hinweis wurde uns gegeben, dass wir an die Rangfolge der Operatoren, Entwicklungsbäume und Rekursion denken sollten.Das hört sich erst mal sehr einfach an und meine erste einfache Lösung funktioniert auch schon halbwegs. Ich habe aber Probleme die Teilaufgabe mit den Rechenregeln in den Griff zu bekommen. Bislang funktionieren bei mir nur +, -, * und /.
Im anderen Forum sprach jemand von einem Recursive-Descent Parser und damit kann ich leider überhaupt nichts anfangen. Auch der damal mitgelieferte Beispielcode ist ein Buch mit sieben Siegeln für mich.Hat von euch schon jemand so etwas gemacht und kann vielleicht einen Beispielcode posten? Auch für hilfreiche Tipps wäre ich sehr dankbar.
Ach ja, das Programm soll in C geschrieben werden und wir verwenden den Dev-C++.
Danke,
Sonja
-
Hi,
wurde die letzten Tage hier schon oft gefragt, schmeiß mal die Forensuche an.
-
War 79616363 bei spotlight.de denn so unfreundlich zu dir?
-
Hallo TactX, nein unfreundlich war er nicht, er hat mir bei einer anderen Frage sogar sehr geholfen und meinen zugemailten Code korrigiert.
Seine Antwort zu meinem Taschenrechnerproblem ist aber recht wirr und ich weiss nicht, wie ich das umsetzen soll. Er hat recht, dass wir Rekursion verwenden sollen, aber irgendwie verstehe ich das nicht. Ich will 79616263 nicht schon wieder mit einer Mail belästigenMfG,
Sonja
-
guckst du: http://www.softnet.tuc.gr/~apdim/projects/e/
-
Magic words: top down parser
such im Google danach