![]() |
![]() |
C++ - Übung zu Zeigern
|
G.Eichelsdörfer
Staatliche Technikerschule Weilburg |
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
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.
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.
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
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.
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.
Values
ist als Zeiger zu implementieren.
DoubleArray Werte(12);
für eine Kapazität von 12.
Wegen des zur Laufzeit allokierten Speichers benötigt die Klasse DoubleArray
nun auch einen
Destruktor. Dies soll im Folgenden thematisiert werden.