zurück weiter

C++ - Übung zu Zeigern
und Speicherallokation

G.Eichelsdörfer
Staatliche Technikerschule Weilburg

Neunte Übungen

Hier soll die Allokation von Speicher sowie der Zugriff per Zeiger angewandt und geübt werden.
Beachten Sie, dass jeder allokierte Speicher auch wieder freizugeben ist. Arbeitsbereich: zeiger

9.1 Häufigkeiten von Zufallszahlen

Projekt: haeufigkeiten1

Der Anwender soll zu Beginn die gewünschte Kapazität eines int-Datenfeldes eingeben. Danach soll ein dynamisches Datenfeld von dieser Kapazität per Speicherallokation angelegt werden. Dieses Datenfeld ist mit Zufallszahlen zwischen 1 und 20 zu füllen. Danach sollen die Häufigkeiten aller Zufallszahlen zwischen 1 und 20 ermittelt und in einem zweiten geeigneten Datenfeld abgelegt werden. Zum Schluss sollen die Zahlen 1 bis 20 zusammen mit deren Häufigkeiten ausgegeben werden.
Alle Zugriffe auf das dynamische Datenfeld soll über Zeiger (nicht Index!) erfolgen.

9.2 Zerlegung in Funktionen

Projekt: haeufigkeiten2

Zerlegen Sie das obige Programm in die Funktionen main(), fillrand() und count()! Diejenige Funktion, welche eine Speicherallokation durchführt, sollte auch die Freigabe des allokierten Speichers übernehmen. Auf diese Weise sind die Zuständigkeiten eindeutig verteilt. Die Allokation und die Freigabe soll hier die main-Funktion übernehmen.
fillrand() soll ein importiertes Datenfeld mit Zufallszahlen von 1 bis 20 füllen.
count() soll die Häufigkeiten der Zufallszahlenwerte ermitteln.
main gibt die Häufigkeiten aus.

9.3 Personendaten in allokiertem Speicher

Projekt: structalloc

Angelehnt an die Übung 6.1 sollen die wichtigsten Daten einer Person einzulesen und in einer dynamisch angelegten Structvariablen abzuspeichern. Danach sind diese Daten auszugeben.
Zur Erinnerung: Die wichtigsten Daten einer Person sind
der Name, der Vorname, das Geburtsdatum und die Anschrift

9.4 Dynamisches Datenfeld mit Zeigern auf Personendaten

Projekt: zeigerfeld

Das obige Projekt "structalloc" soll so erweitert werden, dass mehrere per Speicherallokation angelegte Structs mit Personendaten gefüllt werden können. Hierfür ist zunächst die Anzahl an Personendaten (Structs) einzulesen. Ein entsprechend großes dynamisches Datenfeld für Zeiger auf Personenstructs muss erzeugt werden. Die Zeiger in diesem Datenfeld sollen die Anfangsadressen der dynamisch anzulegenden Personendatenstructs aufnehmen.
Alle dynamisch gespeicherten Personendaten sind auszugeben.

9.5 Datenfeld der Klasse DoubleArray nach Bedarf anlegen

Arbeitsbereich: klassen, Projekt: doublearray

Die bereits erstellte Klasse DoubleArray soll flexibler werden, indem zur Laufzeit das intern verwaltete Datenfeld für (fast) beliebig viele double-Werte angelegt wird. Zu diesem Zweck sind folgende Änderungen vorzunehmen.

Wegen des zur Laufzeit allokierten Speichers benötigt die Klasse DoubleArray nun auch einen Destruktor. Dies soll im Folgenden thematisiert werden.