Лабораторна робота № 2.7 дослідження використання підпрограм в лінійних структурах даних
Теоретичні відомості
Відкрита підпрограма (макрос) забезпечує механізм для заміни міста виклику макросу текстом тіла макросу з або без набору формальних параметрів. Всі наступні екземпляри <позначення макросу> в вихідному тексті будуть замінені текстом визначеним як <тіло макросу>. Якщо макрос має (<формальні параметри>), ідентифікатори, які слідують за "(" розглядаються як параметри до функції. Всі екземпляри <позначення формальних параметрів> в <тілі макросу> будуть замінені на фактичний текст.
Завдання
Написати програму на мові Сі, яка складається з наступних дій:
-
Створення заголовного файлу (з розширенням .h). В файлі описується:
-
лінійна структура даних в зв’язаному уявленні (список), елемент якої має тип згідно з варіантом (табл. 2.30);
-
відкрита підпрограма (inline-функція) згідно з варіантом (табл. 2.31).
-
Створення основного файлу (з розширенням .cpp), в якому необхідно:
-
включити заголовний файл за допомогою директиви препроцесора include;
-
описати „підпрограму_1” формування елемента першого списку згідно з варіантом (табл. 2.30);
-
описати „підпрограму_2” формування другого списку згідно з варіантом (табл. 2.31). При формуванні використовується inline-функція;
-
описати головну програму, в якій застосовуються описані підпрограми, тобто формується перший список за допомогою „підпрограми_1” (кількість елементів згідно з варіантом) та формується другий список за допомогою „підпрограми_2”.
Таблиця 2.30
№ варіанта |
Тип даних елементу списків |
Кількість елементів 1-го списку |
Перший список |
Спосіб формування елементу 1-го списку |
|
char |
10 |
Односпрямований |
Включення до початку списку |
|
float |
9 |
Односпрямований |
Включення в кінець списку |
|
char |
6 |
Односпрямований |
Включення до початку списку |
|
int |
10 |
Односпрямований |
Включення після першого елементу |
|
double |
7 |
Односпрямований |
Включення в кінець списку |
|
short |
11 |
Односпрямований |
Включення в кінець списку |
|
float |
8 |
Односпрямований |
Включення після другого елементу |
|
char |
9 |
Двоспрямований |
Включення в кінець списку |
|
double |
7 |
Двоспрямований |
Включення до початку списку |
|
long |
10 |
Двоспрямований |
Включення в кінець списку |
|
float |
9 |
Односпрямований |
Включення до початку списку |
|
int |
9 |
Односпрямований |
Включення після першого елементу |
|
char |
7 |
Односпрямований |
Включення в кінець списку |
|
double |
9 |
Двоспрямований |
Включення до початку списку |
|
short |
11 |
Односпрямований |
Включення в кінець списку |
Таблиця 2.31
№ варіанта |
Принцип формування 2-го списку |
Спосіб формування елементу 2-го списку |
Призначення inline-функції |
|
Односпрямованого списку зі значень елементів 1-го списку, які розташовані на парних позиціях |
Включення в кінець списку |
Перевірка на рівність нулю вказівника на наступний елемент |
|
Односпрямованого списку зі значень елементів 1-го списку, які розташовані на непарних позиціях |
Включення в кінець списку |
Перевірка на нерівність нулю вказівника на наступний елемент |
|
Перетворення односпрямованого списку в двоспрямований список |
Включення в кінець списку |
Перевірка на рівність нулю вказівника на наступний елемент |
|
Односпрямованого списку з парних значень елементів 1-го списку |
Включення до початку списку |
Перевірка на існування першого елементу списку |
|
Односпрямованого списку з від’ємних значень елементів 1-го списку |
Включення в кінець списку |
Перевірка на нерівність нулю вказівника на наступний елемент |
|
Односпрямованого списку з непарних значень елементів 1-го списку |
Включення до початку списку |
Перевірка на рівність нулю вказівника на наступний елемент |
|
Односпрямованого списку з додатних значень елементів 1-го списку |
Включення до початку списку |
Перевірка на існування другого елементу списку |
|
Перетворення двоспрямованого списку у односпрямований список |
Включення до початку списку |
Перевірка на рівність нулю вказівника на наступний елемент |
|
Односпрямованого списку з додатних значень елементів 1-го списку |
Включення в кінець списку |
Перевірка на знак значення елементу списку |
|
Односпрямованого списку з від’ємних значень елементів 1-го списку |
Включення до початку списку |
Перевірка на знак значення елементу списку |
|
Односпрямованого списку з значень елементів 1-го списку, які більше 10 |
Включення в кінець списку |
Перевірка значення елементу списку на більшість 10 |
|
Двоспрямованого списку з значень елементів 1-го списку, які менше 5 |
Включення в кінець списку |
Перевірка значення елементу списку на меншість 5 |
|
Односпрямованого списку з значень елементів 1-го списку, які не дорівнюють символу ’а’ |
Включення до початку списку |
Перевірка значення елементу списку на рівність символу ’а’ |
|
Двоспрямованого списку з значень елементів 1-го списку, які входять до діапазону [0,1] |
Включення в кінець списку |
Перевірка значення елементу списку на входження до діапазону [0,1] |
15 |
Односпрямованого списку з значень елементів 1-го списку, які кратні 3 |
Включення після першого елементу |
Перевірка значення елементу списку на кратність 3 |