Структури

   Определение:    Структурата представлява набор от разнообразни типове
данни с различна дължина , определени с една декларация.

Деклариране :
struct Етикет                                            struct Name
{                                                            {
тип1 член1;                                                      char first[30];
тип2 член2;                                                      char last[30];
тип3 член3;                                                      int year;
.                                                            } Asen,Ivan;
.
типN членN;
} име на обекта (променливата);

      Действие :

      struct – служебната дума за деклариране на структура;
      Етикет – името на структурата-незадължителна част, но обекта (променливата)
трябва де е деклариран, тук след затварящата фигурна скоба
(от по-горния пример - Ivan, Asen)
      тип – показва от какъв тип ще бъдат променливите (идентификаторите);
      име на обекта - не задължително поле, служи за директно деклариране на обекти.
Името на структурата може да се ползва за деклариране на нови променливи (обекти), както int, double, float.

   Пример 1:
Въведени са име, през име и години на ученик и след това се извеждат.

#include <iostream>
#include <string.h>
using namespace std;
struct ime
{
string first ;
string second ;
int year ;
};
int main()
{
ime a;
a.first="Ivan";
a.second="Asenov";
a.year=19;
cout<<a.first<<","<<a.second<<","<<a.year<<endl;
return 0;
}

   Пример 2: Декларираме orange и bananas от тип fruit, преди това в декларацията сме декларирали applle.
Извеждаме само orange.name и orange.price.

#include <iostream>
#include <string.h>
using namespace std;
struct fruit
{
char name [30];
double price;
}apple;

int main()
{
fruit orange,banana;
strcpy(orange.name,"Greek");
orange.price=2.00;
cout<<orange.name<<","<<orange.price<<endl;
return 0;
}

В литературата fruit се нарича запис , name и price са елементи на записа и се наричат полета. Достъп до полетата на записа се осъществява, чрез точка '.' т.е. Пише се името променливата(обекта) точка и след това името на полето.

   Пример 3: Декларираме низ, чрез служебната дума char[30] и string, забележете разликата как се присвояват стойности на a.first и a.second .

#include <iostream>
#include <string.h>
using namespace std;
struct ime
{
//string first ;
char first[30];
string second ;
int year ;
};
int main()
{
ime a;
//a.first="Ivan";
strcpy(a.first,"Ivan");
a.second="Asenov";
a.year=19;
cout<< a.first<< ","<< a.second<<","<< a.year<< endl;
return 0;
}


  Пример 4 : Напишете програма, която да изчисли разстоянието между две точки
т. A1(x,y) и т. A2(x,y) по зададени координати. Кординатите на точките въвеждаме от клавиатурата. Използваме структура за деклариране на координатите на точките.
pitagor
  Фиг. 1. Схема да се изчисли разстоянието между точките А1 и А2.


#include<iostream> // for Code Blocks
#include<math.h>
#include<clocale>
using namespace std;
struct point
{
double x;
double y;
}A1,A2;

int main()
{
setlocale (LC_ALL, "en_US.UTF8");
double c,d;
char s=251;
cout<< "A1.x=";
cin>> A1.x;
cout<< "A1.y=";
cin>> A1.y;
cout<< "A2.x=";
cin>> A2.x;
cout<< "A2.y=";
cin>> A2.y;
d=pow(A2.x-A1.x,2)+ pow(A2.y-A1.y,2);
c=sqrt(d);
cout<< "sqrt("<< d<< ")="<< c<< endl;
cout<< "\u221A"<< d<< "="<< c<< endl; // for Linux OS
cout<< s<< d<< "="<< c<< endl; // for Windows OS
return 0;
}




   Пример 5 : Въвеждаме име, през име и години на трима ученика
и след това ги извеждаме.
Може да копирате цялата програма, като я маркирате и след това със стрелката от клавиатурата натискате надолу
или от Структури десен бутон на мишката и Open link in new tab.

#include <iostream>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
struct ime
{
string first ;
string second ;
int year ;
};
void inn (ime& a,int i)
{
cout<< "N:"<< i+1<< endl;
cout<< "Enter the first name =>";
cin>>a.first;
cout<< "Enter the last name=>";
cin>>a.second;
cout<< "Enter years =>";
cin>>a.year;
}
void outt (ime& a,int i)
{
cout<< endl<< "N:"<< i+1<< endl;
cout<< a.first<< " "<< a.second<< " "<< a.year<< endl;
}
int main()
{
int i;
ime n[3];
for(i=0;i<3;i++)
inn(n[i], i);
for(i=0;i<3;i++)
outt(n[i],i);
return 0;
}

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