Einzelnen Beitrag anzeigen

Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#2

Re: aus infix aufgabe Binärbaum erstellen

  Alt 12. Apr 2008, 15:08
Hi,

naja erstmal solltest du den ganzen Ausdruck pharsen, dazu solltest du dir die Funktionen Copy, Pos und Trim anschauen und eine Objektstruktur abspeichern. Auch wenn ihr Klassen noch nicht hattet: Mach es trotzdem so. Klassen bieten sich hier geradezu an.
z.B. Könntest du eine abstrakte Klasse "Expression" schreiben, die dann Nachfahren des Typs "Addition", "Subtraktion", usw. und "Zahl" hat.

Die Klasse Expression könnte dann eine Methode Draw(Left,Right,Top:integer); haben, die den Ausdruck im Bereich zwischen Left und Right, ab y-Kooridinate Top zeichnet. Das Rechenzeichen, welches du mit "if Self is Addition then rechenzeichen:='+';" usw. bestimmen kannst, musst du dann lediglich in die Mitte hinschreiben, zwei schräge Striche zeichen, und dann ganz einfach "Draw(Left, (Left+Right) div 2, Top + HOEHE_EINER_EBENE);" für den linken Ast und "Draw((Left+Right) div 2+1, Right, Top +HOEHE_EINER_EBENE);" für den rechten Ast rekursiv aufrufen.


Jetzt musst du nach dem Pharsen nur noch einmal die Methode "Draw(0, Canvas.Width-1, 0);" für den obersten Ausdruck aufrufen, und das wars dann schon

Viele Grüsse,
Macci
  Mit Zitat antworten Zitat