Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labor.doc
Скачиваний:
6
Добавлен:
03.11.2018
Размер:
220.16 Кб
Скачать

Лабораторна робота 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), якщо черга пуста.

Вказівки.

Передбачити обробку виключної ситуації: добування значення із порожньої черги.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]