![]() |
![]() |
C++ - Übung zu Datenverbunde |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
In diesen Übungen soll die Deklaration geeigneter Verbunde (Structs) und deren Verwendung
geübt werden. Manchmal besitzt ein Struct ausschließlich Komponenten desselben Typs.
Dann könnte man dafür auch ein Datenfeld einsetzen. Trotzdem ist zumeist ein Struct vorzuziehen,
weil damit der Quelltext in höherem Maße selbstdokumentierend ist.
Außerdem kann man im Gegensatz zu einem Datenfeld einen Struct auch in einer Funktion anlegen
und diesen als Resultat per return
liefern.
Arbeitsbereich: verbunde
Eine zusammengesetzte Variable soll die wichtigsten Daten einer Person aufnehmen können. Dies sind der Name, der Vorname, das Geburtsdatum und die Anschrift.
Erstellen Sie einen C++-Quelltext mit folgenden Teilen:
Ein Struct "Person" soll die oben angeführten Daten aufnehmen können. Dieser ist zu deklarieren.
In der main-Funktion sollen die Daten einer Person eingelesen und anschließend ausgegeben werden. Vor der Ausgabe einer Komponenten soll deren jeweilige Bedeutung notiert werden. Beispiel: "Name: Muster"
Projekt: structeinaus
Anregung: Sie sollten auch eine Textdatei aus ebensolchen Daten anlegen und diese per Umlenkung einlesen. Entsprechend können Sie die eingelesenen Daten in einer Datei speichern lassen.
Lassen Sie nun das Einlesen und das Ausgeben in dafür spezialisierten Funktionen durchführen,
die von der main-Funktion aufgerufen werden.
Projekt: structeinaus2
Die Funktion inPerson() soll das Einlesen von Personendaten übernehmen und diese als Resultat liefern. Dazu ist lokal in der Funktion eine Variable vom Typ Person anzulegen.
Die Funktion outPerson() soll die Ausgabe von Personendaten durchführen. Die Ausgabe soll genau so strukturiert werden wie in der vorhergehenden Übung.
Wenn an eine Funktion ein Datenfeld zwecks Verarbeitung übergeben wird, dann muss die
Funktion die Information erhalten, wie viele Elemente des Datenfeldes zu verarbeiten sind.
Dies kann der Funktion mit einem weiteren Parameter mitgeteilt werden.
Beispiel: double Max = maximum(Zahlen,50);
Um den zweiten Parameter einsparen zu können, kann man einen Verbund zusammenstellen,
der neben dem Datenfeld selbst in einer weiteren Komponente dessen aktuelle Größe beinhaltet.
Dann kann beispielsweise die Funktion maximum()
mit nur einem
Struct-Parameter aufgerufen werden.
Beispiel:
struct DoubleArray
{...}; // Ihre Aufgabe!
...
DoubleArray Zahlen;
...
double Max = maximum(Zahlen);
Erstellen Sie ein Programm mit folgenden Teilen:
Der Struct DoubleArray soll ein Datenfeld für 100 Fließkommazahlen, eine Komponente für die aktuelle Größe des Datenfeldes und eine Komponente für die Kapazität (maximale Größe) des Datenfeldes beinhalten. Die Kapazität ist in dieser Übung auf 100 zu setzen.
Die Funktion append() soll eine Fließkommazahl an die bereits in einem DoubleArray abgelegten Werte anhängen und die Größe aktualisieren.
Die Funktion output() soll alle in einem DoubleArray enthaltenen Fließkommazahlen ausgeben.
Die main-Funktion soll eine DoubleArray-Variable zur Verfügung stellen, diese geeignet initialisieren und die obigen Funktionen zum Füllen des Datenfeldes und zum Ausgeben desselben aufrufen. Das Einlesen von Fließkommazahlen soll mit dem Wert 0 beendet werden.
Projekt: arrayinfo