Добавил:
ФКН Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Семестр 2 / Алгоритмизация Практика 6 язык С

.pdf
Скачиваний:
89
Добавлен:
12.04.2020
Размер:
289.89 Кб
Скачать

Алгоритмизация и программирование – семестр 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