Berechnung arithmetischer Ausdrücke - Aufbau eines binären Baumes
-
Hallo,
ich möchte ein Programm schreiben, das arithmetische Ausdrücke berechnen kann.
Also so etwas wie z.B. 3*a+b*cos(x)Wo ich mir jetzt nicht so ganz sicher bin, ist die Handhabung von Funktionsnamen.
Wie stelle ich eine Funktion im Binärbaum dar ?
Einfach als einen Knoten mit nur einem Nachfolger ?Für Tipps und Links zu Webseiten danke ich schonmal im voraus.
Und bitte: keine Links zu Google und ähnlichen Suchmaschinen, die habe ich gestern und heute stundenlang ausgiebig strapaziert.
-
ja, das wäre eine möglichkeit. Ist dann eine unäre funktion. Ein unäres Minus gibt es ja auch (also sowas wie -3+4).
-
Kennt ihr Beispielprogramme in C ?
-
Was willst du denn für Tips?
Du hast genau eine konkrete Frage gestellt, und die Antwort darauf ist (abgesehen davon dass sie schon von Maxi gegeben wurde): ja, einfach als Knoten mit nur einem Child.
Wenn du sonst noch was wissen willst stell bitte konkrete Fragen.Ok, doch noch ein Tip: du kannst den Baum natürlich auch implizit darstellen, z.B. in der Umgekehrt Polnischen Notation:
-
ja, also ich würd gern eine binärbaum-struktur aus einem arithmetischen ausdruck erstellen und diesen ausduck dann berechnen.
wo es hapert, ist die aufstellung des algorithmus
-
z.b. so http://www.cz.j.th.schule.de/html_inc/schule/lehrer/privat/mirko_koenig/postfix/postfix.htm#in2post
-
danke, bestimmt nett gemeint, aber das ist nicht das was ich suche
ich möchte die arithmetischen ausdrücke nicht in die postfixnotation umformen, sondern einen binären baum aufbauen, diesen dann rekursiv durchlaufen und den ausdruck berechnen.
das durchlaufen ist kein problem. aber den baum aufzubauen, da komm ich noch nicht so ganz hinter.
-
http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
wenn du den pseudo-code des ersten verfahrens umsetzt gehts.
btw: schon mal goggle bemüht? zB expression parser oder parsing expressions?
-
Maxi schrieb:
btw: schon mal goggle bemüht? zB expression parser oder parsing expressions?
ja, ich habe google ausgiebig bemüht, stundenlang ( kein witz )
vielen dank erstmal für den link, ich werde nach feierabend voller spannung mal reinschauen.
-
najaaaa, also, das dritte verfahren käme in frage.
kapier ich zwar nicht, aber naja.
jetzt weiss ich wenigstens, nach welchem begriff ich suchen muss: top-down parser rekursiv
vielleicht finde ich ne seite, wo die entwicklung des algos schritt für schritt erklärt wird. ( für doofe)
-
Das ganze geht dann uebrigens in den Bereich "Compilerbau" ("Übersetzerbau"), wenn du noch nach einem guten Stichpunkt zum googeln suchst.
-
genau so sieht das aus
jetzt hab ich erstmal genug material gesaugt für die nächsten monategruß
p.n.