Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi aus infix aufgabe Binärbaum erstellen (https://www.delphipraxis.net/111971-aus-infix-aufgabe-binaerbaum-erstellen.html)

praesident 12. Apr 2008 12:47


aus infix aufgabe Binärbaum erstellen
 
Hallo miteinander,


wir müssen in der Schule folgendes Programm schreiben:

Der user soll einen vollständig geklammerten Infix-Term eingeben. z.b. ((3+5)*9)+(3*7)

Aus diesem soll dann mittels canvas ein Binärbaum gezeichnet werden.

Das ganze soll rekusiv erfolgen, allerdings habe ich im Moment noch nicht mal einen Ansatz.

Hättet ihr viellt. ein paar Lösungsvorschläge oder ein Beispielprogramm (z.B. Welche Parameter sollte ich verwenden?) ?


Ich muss aber noch dazu sagen, dass wir noch keine Klassen behandelt haben.


Wäre euch für eure Hilfe sehr Dankbar

mfg

Macci 12. Apr 2008 14:08

Re: aus infix aufgabe Binärbaum erstellen
 
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 :-D

Viele Grüsse,
Macci

Medium 12. Apr 2008 17:14

Re: aus infix aufgabe Binärbaum erstellen
 
Zitat:

Zitat von Macci
pharsen

Macht weiteres Suchen einfacher ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz