Seite 1 von 1

Python Taschenrechner

Verfasst: Sonntag 6. September 2020, 13:44
von wasgeht1023
hi alle zusammen,

ich habe ein Problem bei dem ihr mir hoffentrlich helfen könnt. ich bin noch nicht so gut in python und soll jetzt einen tascehnrechner programmieren.
er soll mit binärbäumen geschrieben sein und bestimmte Anforderungen erfülen:
es soll Klassen enthalten
das Programm soll eine formel abfragen mit beliebig vielen zahlen durch Input(z.B. 5+6-4+3+9)
und daruaf hin das ausrechnen und die lösung ausgeben
es soll nur + und - rechnen können und sonst eine Fehlermeldung ausgeben

Vielleicht kann mir hier irgenjemand helfen den Code dazu zu schreiben.
ich sitze daran schon eine ganze weile und komme kein stück weiter.
danke schon mal im vorraus

PS bevor ihr fragt ich hab bis jetzt noch nichts weil ich noch nicht mal weiß wie ich anfangen soll.
Mein problem ist das ich nicht verstehe wie ich dazu die Bäume schrieb soll
Vielleicht hat jemand von euch eine Idee oder einen Beispiel Code oder einen fertigen

Re: Python Taschenrechner

Verfasst: Sonntag 6. September 2020, 14:14
von __deets__
Und zu deinem letzen Post hat sich was genau geändert?

Es wird dir hier keiner fertigen Code liefern. Auch nicht beim wiederholten Posten der gleichen Nachricht.

Fang an, die notwendigen Dinge zu programmieren.

Zu Beginn steht die Zerlegung der Eingabe in die erlaubten Token Zahl und Operation.

Ein weiterer Schritt ist die Definition einer Baumstruktur. Ein Knoten darin muss entweder eine Zahl darstellen, oder eine Operation mit einem linken und einem rechten Teilbaum. Jeder knoten hat eine Methode „auswerten“, und die liefert das Ergebnis zurück. Entweder also eine Zahl. Oder das Ergebnis der Operation auf den beiden Teilbäumen.

Und dann sind diese beiden Teile so zu verknüpfen, dass aus den tokens der Baum erstellt wird.

Re: Python Taschenrechner

Verfasst: Sonntag 6. September 2020, 14:32
von __blackjack__
@wasgeht1023: Ausdrücke kann man als Syntaxbäume darstellen. Wobei das hier ein bisschen ”langweilig” ist wenn man nur zwei Rechenoperationen mit gleichem Rang hat. Denn dann sind die Bäume die man generiert, wenn man das unkompliziert implementiert, letztlich degeneriert und eigentlich nur verkettete Listen.

Vielleicht kommt da ja irgendwann noch eine Folgeaufgabe die das durch mehr Rechenoperationen und vielleicht auch Klammern erweitert.

Also erster Schritt: Schlau machen was Syntaxbäume sind, und wie man zum Beispiel die gegebenen Beispieleingabe als Syntaxbaum darstellen kann.

Danach musst Du Dir überlegen wie man so einen Syntaxbaum als Datenstruktur (mit einer eigenen Klasse) modellieren kann.

Dann folgt die Umwandlung einer Zeichenkette in so eine Datenstruktur inklusive erkennen von Syntaxfehlern. Ich würde da nicht versuchen zu viel auf einmal zu machen und beispielsweise das zerlegen der Eingabe in Token und das bauen des Baums aus einem Tokenstrom in mindestens zwei Funktionen aufteilen.

Das Ausrechnen des Ergebnisses ist eine Methode auf dem Datentyp aus dem der Baum aufgebaut ist und wohl so mit das trivialste an der Aufgabe.

Und dann ist man auch schon fertig. 😎

Re: Python Taschenrechner

Verfasst: Freitag 11. September 2020, 17:41
von __blackjack__
Das Thema geht hier weiter: viewtopic.php?f=1&t=49581