Similar presentations:
Структуры_1-
1. Структуры
ПРОГРАММИРОВАНИЕ НА С++2.
СтруктурыСтруктура - это набор из одной или более
переменных, возможно различных типов,
сгруппированных под одним именем для
удобства обработки.
3.
Структурапредставляет собой сложный тип данных,
составленный из простых типов,
позволяющий использовать группу
связанных между собой данных как единое
целое.
Отдельный элемент структур называют
полем.
4.
СтруктурыДата состоит из нескольких частей таких,
как:
• день,
• месяц,
• год,
• возможно, день недели
• имя месяца.
5.
СтруктурыЭти пять переменных можно объединить в
одну структуру вида:
struct date
{
int day;
int month;
int year;
int week_day;
char mon_name[4];
}
6.
СтруктурыТеперь можно объявлять переменные типа
date:
struct date x, y;
или просто
date x, y;
7.
Общая форма объявления структуры:struct имя_типа
{
тип_1 элемент_1;
тип_2 элемент_2;
…
тип_n элемент_n;
};
8. Структура для описания точки на плоскости:
struct tchk{
double x, y;
};
9. Структура для описания даты:
struct date{
int d, m, g;
};
10. Структура для описания книги:
struct kniga{
string avt, nazv;
int str, god;
};
11. Структура, описывающая студента, поступившего в ВУЗ по результатам ЦТ:
struct student{
string fam, gorod;
int god_r;
В данном примере для каждого студента
хранится его фамилия (fam), город из
которого он приехал (gorod), год
рождения (god_r). В векторе
otm хранятся три отметки, полученные на
ЦТ, поле sr_bal предназначено для
хранения среднего балла аттестата.
vector <int> otm = vector<int>(3);
int sr_bal;
};
12. Описание переменных типа структура.
Описание переменных типа структура.Здесь описаны
tchk A, B;
переменные А и В типа tchk (две
точки); переменные d1 и d2 типа date
date d1, d2;
(две даты); переменная K типа kniga и
переменная gruppa, являющаяся
массивом, содержащим описание для 30
kniga K;
студентов.
vector <student> gruppa (30);
13. Инициализация структуры:
A = {3.2, -4.1};K = {"Н.Я.Виленкин",
"Комбинаторика", 400, 2013};
Точка А имеет координаты (3.2; -4.1): книга K —
«Комбинаторика», автор — Н. Я. Виленкин, в ней
400 страниц, издана в 2013 г.
14. Обращение к полям структуры:
B.x = 1; B.y = -1;cin >> d1.d >> d1.m >> d1.g;
if (K.str > 100)…;
cout << gruppa[2].otm[1]
15. Описание структуры для хранения отрезка, концы которого являются точками:
struct otrezok{
tchk beg, en;
};
Использование:
otrezok AB;
AB.beg.x = 0;
AB.beg.y = 0;
AB.en.x = 2;
AB.en.y = -3;
ИЛИ
tchk A = {0,0}, B = {2, -3};
otrezok AB = {A, B};
16. Использование:
otrezok AB;AB.beg.x = 0;
AB.beg.y = 0;
AB.en.x = 2;
AB.en.y = -3;
tchk A = {0,0},
B = {2, -3};
otrezok
AB = {A, B};
17.
СтруктурыОбращение
структуры:
к
отдельному
элементу
x.day = 22;
x.month = 1;
cout << x.day << "." << x.month;
18.
СтруктурыСтруктуры можно присваивать:
y = x;
19.
СтруктурыНо нельзя сравнивать:
if (x==y) cout << "*";
20.
СтруктурыСтруктуры могут быть вложенными –
карточка ученика может выглядеть так:
struct pupil
{
char name[20];
char address[50];
date birthdate;
float sb;
};
// имя
// адрес
// дата рождения
// средний балл
21.
СтруктурыЕсли мы определим Ivan как
pupil Ivan;
то
Ivan.birthdate.month
будет ссылаться на месяц рождения.
22.
СтруктурыМассив структур:
pupil Class [20];
Class[3].sb = 8.9;
Class[3].birthdate.day = 22;
23.
СтруктурыУказатель
на
структуру
аналогичен
указателю на любой другой тип данных.
24.
Структурыpupil *pp = class;
pp++; // сдвиг на 1 элемент массива
// обращение к массиву по указателю
cout << (*pp). birthdate.month;
// то же самое, но короче и нагляднее
cout << pp-> birthdate.month;