SS 1996 - Fachhochschule Köln
Fachbereich Nachrichtentechnik
Matthias Groß
Praktikum Datenverarbeitung - 3. Aufgabe
Abgabetermin für alle: Montag 24.06. 1996 im DV-Labor
Bei dieser Praktikumsaufgabe sollen alle erlernten Fähigkeiten einmal gesammelt verwendet und zu einem Programm vereinigt werden. Diese Aufgabe enthält auch viele Komponenten, die für die Klausur wichtig sind. Es werden zur konkreten Bearbeitung folgende Hilfsmittel benötigt: Bäume und die Anwendung dieser Strukturen für sortierte Ausgaben und Auswertungen in Verbindung mit dynamischer Speicherverwaltung, Stringbearbeitung und die Verwendung rekursiver Funktionen.Es soll ein Programm zum symbolischen Differenzieren geschrieben werden, d.h. aus einem Ausdruck der Form f(x)=a*x^3+x*(x+2*x^2) soll f'(x)=a*3*x^2+1*(x+2*x^2)+x*(1+2*2*x^1) oder noch besser f'(x)=a*3*x^2+x+2*x^2+x*(1+4*x) werden.
Wer Lust hat, kann auch leicht Erweiterungen wie sin(x), cos(x), exp(x) etc. hinzunehmen.
Beachten Sie bitte auch alle weiteren Hinweise aus der Vorlesung. Verwenden Sie bitte das Beispielprogramm ableit.c mit dem Headerfile ableit.h
Bei dieser Aufgabe stellen sich Ihnen mehrere Probleme:
1. Schritt | 2. Schritt | 5. Schritt | |
---|---|---|---|
Der Baum | __+__ a*x^3 x*(x+2*x^2) |
_____+____ __*__ __*__ a x^3 x x+2*x^2 |
____+______ __*__ __*__ a __^__ x __+__ x 3 x __*__ 2 __^__ x 2 |
Man erkennt im obigen Beispiel recht gut, wie an jedem Knoten des B-Baumes, der zwei Nachfolger hat, jeweils ein Operator (+, -, *, /, ^) steht und an den Blättern jeweils eine Zahl oder x bzw. eine andere Variable. Eine Speicherung mathematischer Ausdrücke in dieser Form nennt man Syntaxbaum. Hat man diesen Syntaxbaum einmal aufgebaut, so kann man davon ausgehend viele Dinge tun. Die erste Aufgabe ist die Ausgabe des eingegebenen und im B-Baum abgespeicherten Ausdruckes sowohl in Postfix-Notation (2 x 3 ^ * x x 2 x 2 ^ * + * +) als auch wieder in Infix-Notation (a*x^3+x*(x+2*x^2)). Das fertige Programm sollte nachher ein kurzes Menue wie folgt aufweisen:
Literatur: Algorithmen in C, Robert Sedgewick, Addison-Wesley 1992.