Strukturen innerhalb von Stukturen


Sie können Strukturen innerhalb von anderen Strukturen verschachteln. Es folgt eine Variation des Programms ENGLSTRC, das Ihnen zeigt, wei so etwas in der Praxis aussieht. In diesem Programm wollen wir eine Datenstuktur ertellen, welche die abmessungen eines typischen Raumes aufnimmt: seine Länge und Breite. Da wir mit englischen Längenmaßen arbeiten wollen, werden wir zwei Variablen vom Typ Distance als Längen- und Breiten- Variablen einsetzen, wie im folgenten zu sehen:

struct Room { Distance length; Distance width; }

Hier folgt ein Programm, ENGLAREA, das die Struktur Room verwendet, um einen Raum darzustellen.

// englarea.cpp // Veranschaulicht verschachtelte Strukturen #include <iostream.h> struct Distance // Englisches Längenmaß { int feet; float inches; }; struct Room { Distance length; Distance width; }; void main() { Room dining; // DEfinieren eines Raumes dining.length.feet = 13; // zuweisung von Werten an room dining.length.inches = 6.5; dining.width.feet = 10; dining.length.inches = 0.0; // Länge und Breite umrechnen float l = dining.length.feet + dining.length.inches/12; float w = dining.width.feet + dining.width.inches/12; // Fläche errechnen und dann anzeigen cout << "\nEsszimmerfläche beträgt " << 1 * w << " Quadratfuss"; }

Hier ist die Ausgabe:

Esszimmerfläche beträgt 135.416672 Quadratfuss

Initialisierung von verschachtelten Strukturen

Wie initialisiert man eine Strukturvariable, die selbst Strukturen in sich trägt? Die folgende Anweisung initialisiert die Variable dinig mit denselben Werten, die ihr im ENGLAREA-Programm gegeben wurden:

Room dinig = { {13, 6.5}, {10, 0.0} };

Tiefe der Verschachtlung

Theoretisch können Strukturen beliebig tief ineinander verschachtelt werden. In einem Programm, das zur Planung von Mehrfamilienhäusern eingesetz wird, werden Sie sich vieleicht mit Anweisungen wie

apartment1.laundry_room.washing_machine.width.feet

konfrontiert sehen.


31