_______________________________________________________________________________________________
Aufgabe 1: Erweitern Sie die Klasse CStapel als Reihung (aus der Vorlesung) um eine int-Funktionsmethode mittelwert, die den Mittelwert (Summe/Anzahl) aller Elemente liefert. Die Datenstruktur der Klasse ist:
class CStapel { protected:
int* inhalt; // zeigt auf das
erste Reihungselement
int spitze; // index des letzten
belegten Reihungsplatzes
public: ...
_______________________________________________________________________________________________
Aufgabe 2. Zeichnen Sie das Einfügen in den obigen Stapel.
void einfuegen(int wert) {
spitze++:
inhalt[spitze] = wert;
}
}
Ihre Zeichnung soll den Zustand des Stapels vor und nach dem Einfügen darstellen.
_______________________________________________________________________________________________
Aufgabe 3.: Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.
( ) Richtig cout ist ein Objekt der Klasse iostream.h
( ) Falsch
Grund:
( ) Richtig Ein ADT (abstrakter Datentyp) ist – ähnlich, wie eine Klasse – geeignet, Objekte zu erzeugen.
( ) Falsch
Grund:
( ) Richtig Der Typ der Elemente in der Implementierung eines Multibehälters muss
( ) Falsch in der Klasse definiert werden.
Grund:
( ) Richtig C++-Objekte können – im Gegensatz zu Java-Objekten – auch auch auf dem Stapel (stack)
Grund:
( ) Richtig Der Zugriff auf ein Objekt über einen Zeiger mit einem falschen Inhalt (z.B. 0) löst in C++
Grund:
( ) Richtig Operatoren können in C++ in einer Klasse vereinbart werden.
( ) Falsch
Grund: 0
( ) Richtig Dynamisches Binden ist nur in Java möglich; in C++ wird immer statisch gebunden.
( ) Falsch (Binden = Module/Klassen miteinander verbinden)
Grund:
( ) Falsch
Grund:
_______________________________________________________________________________________________
Aufgabe 4: Implementieren Sie eine Klasse CBehaelter für beliebige Objekte (mit einem typenloser Zeiger vom Typ void *) mit den Methoden schreiben und lesen, die die Ausnahme EVoll und ELeer auslösen, wenn der Behälter voll bzw. leer ist.
_______________________________________________________________________________________________
Aufgabe 5: Implementieren Sie die Funktionsschablone groesser mit dem folgenden Prototyp:
template <class T> bool groesser(const T a, const T b);
Ausprägungen dieser Schablone sollen zwei Werte (gegeben als Parameter) zurückgeben. Was ist die Voraussetzung dafür, dass die Schablone für eine Klasse ausgeprägt werden kann? Beispiel:
class Klasse { ... }
Klasse objekt1, objekt2; ...
cout << objekt1 << " ist " <<
groesser(objekt1, objekt2) ? "größer"
: "kleiner"
<<
" als " <<
objekt2;