- •Факультет інформатики та обчислювальної техніки
- •1 Зміст та оформлення лабораторної роботи
- •2 Теми лабораторних робот
- •3 Варіанти завдань до лабораторних робот
- •Лабораторна робота 1
- •Лабораторна робота 2
- •Лабораторна робота 3
- •Лабораторна робота 4
- •Лабораторна робота 5
- •Лабораторна робота 6
- •Лабораторна робота 7
- •Лабораторна робота 8
- •4 Довідкова інформація
- •5 Література
- •Запорізький національний технічний університет
- •Застосування конструкторів і деструкторів у класах
Лабораторна робота 6
Тема: функції та класи з шаблонами
Варіант 1
Створити функцію сортування (впорядковування) одновимірного масиву з елементами довільного типу. Передбачити параметр функції, який дає змогу виконувати впорядковування елементів масиву: а) по збільшенню значень елементів; б) по зменшенню.
Варіант 2
Написати функцію, яка створює копію іншого двовимірного динамічного масиву довільного типу.
Варіант 3
Створити функцію, яка знаходить найбільший і найменший елементи одновимірного масиву довільного типу.
Варіант 4
Створити функцію, яка створює одновимірний динамічний масив таким чином, що він є конкатенацією (тобто отриманий з’єднанням) двох заданих масивів одного і того ж типу. Застосувати шаблони таким чином, щоб конкатенацію можна було виконувати з масивами довільного типу.
Варіант 5
Створити динамічний клас з шаблонами для роботи з однови-мірними масивами. Передбачити можливість застосування створеного класу для випадків, коли елементи масиву мають будь-який числовий тип. Здійснити перевантаження операцій:
" = " - динамічне присвоєння,
" + " - поелементне додавання,
" - " - поелементне віднімання,
" * " - скалярне множення масивів,
" << " - циклічне переставлення елементів масиву уліво,
" >> " - циклічне переставлення елементів масиву управо,
" [ ] " - доступ до елементу по індексу з контролем.
Варіант 6
Створити динамічний клас з шаблонами для роботи з послідов-
ностями абстрактних символів із деякого алфавіту. Передбачити шаблони для таких випадків: символ є ціле число, символ є символом ASCII, символ є рядок символів ASCII, символ є вектор на площині. Максимальну довжину послідовності і код завершення послідовності вибрати самостійно. Перевантажити операції:
" = " - динамічне присвоєння,
" + " - конкатенація (з’єднання) рядків,
" - " - вилучення підрядку,
" <= " - відношення "менше чи дорівнює",
" >= " - відношення "більше чи дорівнює",
" == " - відношення "дорівнює",
" != " - відношення "не дорівнює".
За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку. Крім того, перевантажити операції введення значення вказаного класу із файлу і виведення у файл з символами " << ", " >> ".
Варіант 7
Створити клас для роботи з множинами. Тип елемента множини - довільний, застосувати шаблони. Здійснити перевантаження символів операцій:
" = " - присвоєння,
" + " - об’єднання множин,
" - " - віднімання множин,
" * " - переріз множин,
" <= " - відношення включення (перевіряється, чи є множина, що надана лівим операндом, підмножиною множини, що надана правим операндом),
" == " - еквівалентність множин,
" != " - нееквівалентність множин,
" << " - належність (перевіряється, чи належить значення, що надане лівим операндом, до множини, що надана правим операндом).
Варіант 8
Створити клас List для роботи із структурою типу "однозв’язний список". Тип елемента списку - довільний, застосувати шаблони. Передбачити функції для виконання таких операцій:
putinbeg - створити новий елемент списку у його початку;
getoutbeg - добути і вилучити перший елемент списку;
putinend - створити новий елемент списку у його кінці;
getoutend - добути і вилучити останній елемент списку;
print - вивести список на екран;
Приклад побудови зв’язного списка з шаблоном див., наприклад, у [ Майкл Хаймен И., Арнсон Боб. Borland C++ 5 для "чайников".- К.: Диалектика, 1997.- 320 с.]
Варіант 9
Створити клас Astack - стек, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб стек мав можливість вміщувати значення довільного типу, застосувати шаблони. Передбачити функції для виконання таких операцій:
push - занести у стек значення типу Тype;
pop - добути і вилучити значення із вершини стека;
print - вивести усі значення стека на екран;
num - повернути кількість значень, що знаходяться у стеку.
Варіант 10
Створити клас Aqueue - структура типу черга, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб черга мала можливість вміщувати значення довільного типу, застосувати шаблони. Передбачити функції - члени класу для виконання таких операцій:
add - занести у чергу надане значення;
pop - добути і вилучити значення із черги;
print - вивести усі значення із черги на екран;
num - повернути кількість значень, що знаходяться у черзі;
isempty - повернути значення true (тип bool), якщо черга пуста.
Варіант 11
Створити клас Lstack - стек, що базується на структурі зв’язного списку. Передбачити, щоб стек мав можливість вміщувати значення довільного типу, застосувати шаблони. Передбачити функції - члени класу для виконання таких операцій:
push - занести у стек надане значення;
pop - добути і вилучити значення із вершини стека;
print - вивести усі значення стека на екран;
num - повернути кількість значень, що знаходяться у стеку;
isempty - повернути значення true (тип bool), якщо черга пуста.
Вказівки.
Передбачити обробку виключної ситуації: добування значення із порожнього стека.
Варіант 12
Створити клас Lqueue - структура типу "черга", що базується на структурі зв’язного списку. Вважати, що тип значення, що зберігаються у черзі, може бути довільним, застосувати шаблони. Передбачити функції для виконання таких операцій:
add - занести у кінець черги значення типу Тype;
pop - добути і вилучити значення із початку черги;
print - вивести усі значення, що знаходяться у черзі, на екран;
num - кількість значень, що знаходяться у черзі;
isempty - повернути значення true (тип bool), якщо черга пуста.
Вказівки.
Передбачити обробку виключної ситуації: добування значення із порожньої черги.