Universität des Saarlandes
Fachbereich 14 - Informatik

Dr. S. Schirra, Dr. E. Schömer

SOFTWAREPRAKTIKUM WS 99/00

4. Übungsblatt
(Abgabe: 15. - 19. November 1999)


1.
Aufgabe:      INKREMENTATION UND DEKREMENTATION (Punkte: 2)

Erweitern Sie die Klasse Integral_double um Inkrement- und Dekrement-Operatoren in Postfix- und Präfixversion, so dass ++id, -id, id++ und id- legale Ausdrücke sind, falls id vom Typ Integral_double ist.

2.
Aufgabe:      NEWTON ITERATION (Punkte: 3)

Eine Nullstelle einer nicht-linearen Funktion f(x) kann mit dem Newton Verfahren approximiert werden. Das Newton Verfahren berechnet eine Folge von reellen Zahlen xi ausgehend von einem Startwert x0 durch

\begin{displaymath}x_{i+1} = x_i - \frac{f(x_i)}{f'(x_i)}.\end{displaymath}

Die Folge der xi konvergiert gegen eine Nullstelle. Das Verfahren wird abgebrochen, sobald |xi+1 - xi| klein genug, d.h. kleiner als ein gegebener Schwellwert ist. Schreiben Sie eine Funktion double newton(...), die das Verfahren implementiert. Die Parameter der Funktion newton() sollen f, die Ableitung f' von f, sowie Startwert und Schwellwert sein.

3.
Aufgabe:      STACK KLASSE (Punkte: 3)

Verbessern Sie den Platzbedarf der Implementierung des Datentyps stack aus der Vorlesung, so dass der Platzbedarf stets proportional zur aktuellen Anzahl der Elemente auf dem stack ist.

Hinweis: Falls das zur Implementierung benutzte Array dreiviertelleer ist, halbieren Sie es.

4.
Aufgabe:      VORDIPLOM (KREDITSYSTEM) (Punkte: 12)

Lesen Sie die neue Studienordnung und die Prüfungsordnung für den Diplomstudiengang Informatik. Entwerfen und Implementieren Sie Klassen für die Lehrveranstaltungen des Grundstudiums. Sie dürfen sich dabei auf drei der sechs möglichen Nebenfächer beschränken. Eine der Memberfunktionen der Klassen sollte int credit_points() sein. Führen Sie Basisklassen für die verschiedenen Kategorien ein, vgl. §3 der Studienordnung.

Schreiben Sie eine Klasse Studentin, die (u.a.) Prüfungsleistungen verwaltet, z.B. in Form eines Feldes oder einer Liste (std::list< Lehrveranstaltung* >) von (Verweisen auf) gegebenenfalls benotete Lehrveranstaltungen.

Implementieren Sie eine Funktionen bool vordiplom(const Studentin&), die überprüft, ob eine Studentin die Anforderungen für die Diplomvorprüfung erbracht hat, vgl. §10 der Prüfungsordnung. Implementieren Sie ferner eine Funktionen float vordiplomsnote(const Studentin&), die die Gesamtnote für das Vordiplom errechnet, vgl. §8 der Prüfungsordnung.

Testen Sie Ihre Klassen und Funktionen an (mindestens) einem Beispiel.