Вложени структури и масив от структури

   Всяка стурктура може да съдържа в себе си разнообразни типове данни,
включително и други структури.
Името на едната структура се използва като тип на променлива (обект) в друга структура. Както знаем ,че самото име на структурата декларира променлива (обект, инстанция,екземпляр)
Деклариране :

struct Име1
{
тип1 член1;
тип2 член2;
тип3 член3;
.
типN членN;
} ;
struct Име2
{
тип1 член1;
Име1 член2;               // Име1 е името на вложената структура,
.                                  // а член2 е променливата (обекта) от този тип .
типN членN;
} ;

Пример 1 : За влагане на структура ime в структура uchenik.

#include <iostream>// for Code::Blocks
#include <string.h>
using namespace std;
struct ime
{
string first ;
string last ;
int year ;
};
struct uchenik
{
int clas;
char bukva_na_clasa;
ime nomer[30];
};
int main()
{
uchenik PMG;
PMG.clas=11;
PMG.bukva_na_clasa='a';
PMG.nomer[0].first="Ivan";
PMG.nomer[0].last="Asenev";
PMG.nomer[0].year=18;
cout<<" "<<PMG.clas<<PMG.bukva_na_clasa<<" class"<<endl;
cout<<" "<<PMG.nomer[0].first<<" "<<PMG.nomer[0].last<<" "<<PMG.nomer[0].year<<" years"<<endl;
return 0;
}

Пример 2 : За влагане на структура ime в структура uchenik. Използвам оператора за рефериране.

#include <iostream>// for Code::Blocks
#include <string.h>
using namespace std;
struct ime
{
string first ;
string last ;
int year ;
};
struct uchenik
{
int clas;
char bukva_na_clasa;
ime nomer[30];
};
int main()
{
uchenik PGI, *p,*p1;
p=&PGI;
p1=&PGI;
PGI.clas=11;
PGI.bukva_na_clasa='b';
PGI.nomer[0].first="Ivan";
PGI.nomer[0].last="Ivanov";
PGI.nomer[0].year=18;
cout<< " "<< p->clas<< PGI.bukva_na_clasa<< " class"<< endl;
cout<< " "<< p->nomer[0].first<< " "<< PGI.nomer[0].last<< " "<< p1->nomer[0].year<<" years"<< endl;
return 0;
}


Пример 3 : За влагане на структура ime в структура uchenik,
като съставяме цикъл за въвеждане на 3 ученика.

#include <iostream>// for Code::Blocks
#include <string.h>
using namespace std;
struct ime
{
string first ;
string last ;
int year ;
};
struct uchenik
{
int clas;
char bukva_na_clasa;
ime nomer[3];
};
int main()
{
int i;
uchenik PMG;
cout<<"Enter the class=>";
cin>>PMG.clas;
cout<<"Enter the letter=>";
cin>>PMG.bukva_na_clasa;
for (i=0;i<3;i++)
{
cout<<"N:"<<i+1<<endl;
cout<<"Enter the first name =>";
cin>>PMG.nomer[i].first;
cout<<"Enter the last name=>";
cin>>PMG.nomer[i].last;
cout<<"Enter years =>";
cin>>PMG.nomer[i].year;
}
cout<<" "<<PMG.clas<<PMG.bukva_na_clasa<<" class"<<endl;
for (i=0;i<3;i++)
{
cout<<"N:"<<i+1<<endl;
cout<<" "<<PMG.nomer[i].first<<" "<<PMG.nomer[i].last<<" "<<PMG.nomer[i].year<<" years"<<endl;
}
return 0;
}

Благодаря за вниманието Ви !