frodo86 Geschrieben 21. April 2007 Geschrieben 21. April 2007 Hi, also wir sollen einen Taschenrechner programmieren der auf einem Kellerautomaten beruht. Ich hab schon rausgefunden, dass man mit dem Kellerautomaten den String der Rechnung (z.B. "4*(3+2)") auf Richtigkeit überprüfen kann, also ob die Zeichen zulässig sind und ob die Klammern richtig gesetzt wurden usw.. aber weiter komm ich nicht.. wie kann ich den Term denn tatsächlich berechnen mit dem Kellerautomaten?? Zitieren
Klotzkopp Geschrieben 23. April 2007 Geschrieben 23. April 2007 Du legst einfach nicht nur die Klammern, sondern auch die Operanden und Operatoren in dem Kellerspeicher ab. Und sobald du etwas hast, das du ausrechnen kannst, tust du das. Sollst du Punkt-vor-Strich o.ä. beachten, oder nur die Klammern? Zitieren
frodo86 Geschrieben 23. April 2007 Autor Geschrieben 23. April 2007 Punkt vor Strich muss auch beachtet werden. Das ist es ja was mir so schwierigkeiten bereitet.. So kann ich den Kellerspeicher nicht einfach so durchgehen, sondern je nachdem was für Operatoren und Klammern benutzt worden sind ändert sich ja die "Reihenfolge" der Berrechnungen sag ich mal.. Wie lös ich denn das Problem? Zitieren
Klotzkopp Geschrieben 23. April 2007 Geschrieben 23. April 2007 So kann ich den Kellerspeicher nicht einfach so durchgehen, sondern je nachdem was für Operatoren und Klammern benutzt worden sind ändert sich ja die "Reihenfolge" der Berrechnungen sag ich mal.Eben. Du musst bei jeder Eingabe in den Automaten entscheiden, ob die Priorität der Operation in der Eingabe höher ist, oder die der Operation, die oben auf dem Stack liegt. Könnte im nächsten Schritt noch eine Operation mit höherer Priorität folgen, musst du die Eingabe erst mal auf dem Stack sichern. Wenn nicht, kannst du anfangen, den Stack wieder abzubauen. Ein Tipp: Mach's erst mal ohne Klammern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.