Nested Structures : Structures within Structures

Structures can be implemented with functions and arrays. Moreover, structures can be implemented as the member of other structure. This is termed as structure within structure.  
When a structure is decleared as the member of another structue, it is called
Structure within a structure. It is also known as nested structure.
Example of nested structure
One example of nested structure is given below:
struct date{
// members of structure
 int day;
int month;
int year;
};

struct company{
char name[20];
long int employee_id;
char sex[5];
int age;
struct date dob;};
Write a program which can collect employee information (such as employee name, id, sex, date of birth etc.) of a company and display the collected information t
#include
#include
#define MAX 1000

// structure block defination
struct date{
// members of structure definition
int day;
int month;
int year;
};

struct company{
char name[20];
long int employee_id;
char sex[5];
int age;
// nested block defination
struct date dob;
};

// structuer object defination
company employee[MAX];
// main function starts
int main(){
company employee[MAX];
int n;
cout << "A program for collecting employee information";
cout << endl;
cout << "And displaying the collected information";
cout << endl << endl;
cout << "How many employees:";
cin >> n;
cout << endl;
// functions defination
void CollectInformtion(company employee[MAX], int n);
void Display(company employee[MAX], int n);

// functions calling
CollectInformtion(employee, n);
Display(employee, n);
cin.get();
return 0;
}
// collecting information form the user
void CollectInformtion(company employee[MAX], int n){
cout << "Enter the following information:";
cout << endl << endl;

for (int i=1; i<=n; i++){
cout << "Enter information for employee no: " << i;
cout << endl;
cout << "Name :"; cin >> employee[i].name;
cout << "ID :"; cin >> employee[i].employee_id;
cout << "Sex :"; cin >> employee[i].sex;
cout << "Age :"; cin >> employee[i].age;
cout << "Date of Birth:" << endl;
cout << "Day :"; cin >> employee[i].dob.day;
cout << "Month :"; cin >> employee[i].dob.month;
cout << "Year :"; cin >> employee[i].dob.year;

cout << endl;
}
}
// displaying entered information to the standard output
void Display(company employee[MAX], int n){
cout << "Employee entered information:";
cout << endl;
cout << "Name ID Sex Age Date of Birth" << endl;
for (int i=1; i<=n; i++){
cout << employee[i].name << "\t";
cout << employee[i].employee_id << "\t";
cout << employee[i].sex; cout << "\t";
cout << employee[i].age; cout << "\t";
cout << employee[i].dob.day << ".";
cout << employee[i].dob.month << ".";
cout << employee[i].dob.year ;

cout << endl;
}
}
Discussion of the above program
At first, the graphical representation of the program is given below:
613294_f260

Graphical representation of the structure

So, the code block will be:
struct date{
// members of structure
int day;
int month;
int year;
};
struct company{
char name[20];
long int employee_id;
char sex[5];
int age;
struct date dob;
};


Look "struct date dob;" is used to link the nested structure.
To initialize the values in nested structue it uses like the followings:
employee[i].dob.day;
employee[i].dob.month;
employee[i].dob.year;

The program has two functions:
void CollectInformtion(company employee[MAX], int n);
void Display(company employee[MAX], int n);

Function "CollectInformtion()" is used to take inputs from the users.And function "Display()" is used to display the final output.