Слайд 2С помощью массивов можно объединить переменные одного типа. В реальном мире, однако,
![С помощью массивов можно объединить переменные одного типа. В реальном мире, однако,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-1.jpg)
требуется объединять между собой данные различных типов.
Например, к характеристикам автомобиля относится:
марка и тип - это последовательности символов;
пробег и производительность – целочисленные величины;
цена – величина вещественная (возможно тип double);
Слайд 3Для объединения разнотипных переменных в языке C ++ используются структуры.
Под структурами подразумевают
![Для объединения разнотипных переменных в языке C ++ используются структуры. Под структурами](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-2.jpg)
группу переменных, объединенных общим именем.
Объявление структуры:
struct имя {
тип1 поле1;
тип2 поле2;
…
типN полеN;
} список переменных ;
Слайд 4Описание структуры – это всего лишь шаблон, по которому впоследствии создаются переменные.
![Описание структуры – это всего лишь шаблон, по которому впоследствии создаются переменные.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-3.jpg)
Переменная структуры в программе создаются точно также, как и переменная любого базового типа:
можно сразу, указав список с названиями после описания структуры:
можно в любом месте кода.
Слайд 5Пример: для моделирования автомобиля создать новый тип из нескольких элементов.
struct TAutoTyp //
![Пример: для моделирования автомобиля создать новый тип из нескольких элементов. struct TAutoTyp](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-4.jpg)
объявляем новый тип
{
char brand[MaxMarka];
char model[MaxModel];
long km;
int kW;
float price;
} ;
Новый тип TAutoTyp создан.
Слайд 6Можно, например, создать новую переменную такого типа, или новый массив, или объявить
![Можно, например, создать новую переменную такого типа, или новый массив, или объявить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-5.jpg)
указатель с таким типом.
TAutoTyp collection; // Объявлена новая переменная
TAutoTyp auto_parking[100]; // Массив автомобилей
TAutoTyp *parking_map; // Указатель на автомобиль
Слайд 7Все данные, которые будут использоваться при выполнении программы, записываются в поля переменной.
Пример:
collection.km
![Все данные, которые будут использоваться при выполнении программы, записываются в поля переменной.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-6.jpg)
= 128000;
collection.kW = 25;
collection.price = 25000.00;
Слайд 8Структуры можно инициализировать.
Для этого используются фигурные скобки.
TAutoTyp JB =
{"Aston
![Структуры можно инициализировать. Для этого используются фигурные скобки. TAutoTyp JB = {"Aston](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-7.jpg)
Martin", "DB5", 12000, 90, 12.95};
TAutoTyp GWB = {0};
Слайд 9Доступ к элементам структуры через указатель:
TAutoTyp *parking_map;
parking_map = &collection;
(*parking_map).price = 12500;
![Доступ к элементам структуры через указатель: TAutoTyp *parking_map; parking_map = &collection; (*parking_map).price](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-8.jpg)
или
parking_map->price = 12500;
Слайд 10Важный аспект- расположение объявления структуры.
Существует два варианта:
Объявление внутри функции main()
Объявление за
![Важный аспект- расположение объявления структуры. Существует два варианта: Объявление внутри функции main()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-9.jpg)
пределами ф-ии main()
Для программ, состоящих из нескольких функций, способ объявления имеет значение.
Внешнее объявление может быть использовано всеми функциями, которые следуют за структурой.
Внутренне объявление - только той функцией, в которой объявлена структура.
Слайд 11ПРИМЕР
struct marks {
char name[10]; int phys;
int chem; int maths; };
struct
![ПРИМЕР struct marks { char name[10]; int phys; int chem; int maths;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-10.jpg)
exams{
double phys;
double chem;
double maths; };
Слайд 12 int main()
{ marks ivanov={"Victor",4,4,3};
marks petrov={"Andre",3,4,3} ;
exams LastYear, ThisY;
![int main() { marks ivanov={"Victor",4,4,3}; marks petrov={"Andre",3,4,3} ; exams LastYear, ThisY; LastYear.chem=4.33; LastYear.maths=3.82; LastYear.phys=3.5;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-11.jpg)
LastYear.chem=4.33; LastYear.maths=3.82;
LastYear.phys=3.5;
Слайд 13ThisY.chem=(ivanov.chem+petrov.chem)/2;
ThisY.maths=(ivanov.maths + petrov.maths) /2;
ThisY.phys =(ivanov.phys+petrov.phys)/2;
cout<<"mathematics "<}
![ThisY.chem=(ivanov.chem+petrov.chem)/2; ThisY.maths=(ivanov.maths + petrov.maths) /2; ThisY.phys =(ivanov.phys+petrov.phys)/2; cout }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/962057/slide-12.jpg)