Алгоритмизация и программирование – семестр 2
Практическое занятие №6 «Объединение»
Сроки сдачи : 16.03 - 20.03.
В прикладных задачах встречаются группы объектов, чьи наборы характеристик частично перекрываются. Обработка таких объектов производится по одним и тем же алгоритмам, если обрабатываются общие свойства объектов, или по разным - если обрабатываются специфические свойства. Для таких задач используются частный случай структуры – объединения.
Объединение, как и структура, содержит элементы разных типов данных, однако эти данные занимают один участок памяти.
Создается при помощи ключевого слова union:
union имя_типа {
описание элементов; } имя переменной;
Структура с объединением (запись с вариантами) состоитиздвух частей.
В первой части описываются поля, общие для всех групп объектов, моделируемых записью. Среди них есть поле, идентифицирующее группу, к которой данный объект принадлежит. А значит, какой из вариантов второй части записи должен быть использован при обработке.
Вторая часть записи содержит описания непересекающихся свойств - для каждого подмножества свойств - отдельное описание. При этом требует именования каждого варианта:
Пример описания объединения (задача излекции)
typedef struct {
char fig_type; |
/* тип фигуры */ |
unsigned int x0, y0; |
/* координаты опорной точки */ |
unsigned char color; |
/* цвет */ |
union { |
|
struct { |
|
unsigned int radius; |
/* радиус окружности */ |
} cyrcle; struct {
unsigned int len1, len2; /*длины сторон прямоугольника */
} rectangle; struct {
unsigned int x1,y1,x2,y2; /* координаты двух вершин
*/
}triangle;
}fig_t;
}figure;
Если в программе определена переменная fig1 типа figure, в которой хранится описание окружности, то обращение к элементу-радиусу окружности имеет вид:
fig1.circle.radius
Наиболее часто структуры с объединением используются в виде массивов структур.
Практическоезанятие№6 |
Страница1 |
Алгоритмизация и программирование – семестр 2
Задание (2 балла):
Описать структуру с объединением - картотека библиотеки (книги и журналы). Организовать обработку динамического массива структуры с объединением:
общие поля:
- название (string);
- год издания (integer);
- количество страниц (integer);
вариативные поля:
для книги - автор (string);
для журнала - выпуск (string), количество статей (integer).
Программа содержитменю с указанными функционалами:
1.Заполнить массив с учетом вариативности.
2.Распечатать информацию обо всех книгах.
3.Распечатать информацию обо всех журналах.
4.Посчитать общее количество статей во всех журналах.
Выполняется в течении 1 занятия:
Отчет по практическому занятию отправляете на e-mail Вашему преподавателю.
Внимание!
1.При отправке письма указывать тему в следующем формате (пример): КС-11, ФИО, ПрЗан№… 2.Отчет отсылать в течении недели, когда выдано задание.
Форма отчета приведена в Приложении.
Практическоезанятие№6 |
Страница2 |
Алгоритмизация и программирование – семестр 2
Приложение.
Харьковский национальный университет имени В. Н. Каразина Факультет компьютерных наук
Отчетпопрактическому занятию № …
дисциплина: «Алгоритмизация и программирование»
«………………………………………»
(тема занятия)
Выполнил: студент группы …… ФИО Проверил: преп. каф. ПОИИ
_____________________
Харьков
2020 2
Практическоезанятие№6 |
Страница3 |
Алгоритмизация и программирование – семестр 2
Задание.
………
………
……….
Исходный код программы.
………
………
……….
Результаты выполнения.
………
………
……….
Практическоезанятие№6 |
Страница4 |