
- •Міністерство освіти і науки україни
- •1 Зміст та оформлення лабораторної роботи
- •2 Теми лабораторних робот
- •3 Варіанти завдань до лабораторних робот
- •Лабораторна робота 1
- •Лабораторна робота 2 Побудова класів та їх використання
- •Лабораторна робота 3 Динамічні класові типи
- •Лабораторна робота 4 Перевантаження операцій
- •Лабораторна робота 5 Введення/виведення потоками, робота з файлами, створення нових потокових операцій
- •Лабораторна робота 6 Функції та класи з шаблонами
- •Лабораторна робота 7 Успадкування, атрибути доступу та віртуальні функції
- •Лабораторна робота 8 Обробка надзвичайних ситуацій
- •4 Довідкова інформація
- •4.1 Запис текстів програм. Стандарт знту-2003
- •5 Література
- •Запорізький національний технічний університет
- •Застосування конструкторів і деструкторів у класах
Лабораторна робота 3 Динамічні класові типи
Варіант 1
Створити клас для роботи з одновимірними динамічними масивами значень типу unsigned int. Передбачити функції класу для виконання таких операцій:
- динамічного присвоєння; - поелементного складання та віднімання; - об’єднання двох масивів у один (конкатенація); - упорядкування масиву по збільшенню та по зменшенню;
- консольне введення та виведення масиву.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 2
Створити динамічний клас для роботи з рядками символів. Максимальна довжина послідовності - 65535. Передбачити функції для виконання таких операцій:
- ініціалізація з ASCIZ-рядка (тобто з рядка, що завершується нуль-байтом);
- введення з клавіатури і з файлу;
- виведення на екран та у файл;
- повернення кількості символів;
- конкатенація рядків.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 3
Створити динамічний класовий тип для роботи з рядками однобайтових символів у форматі ASCIIZ(тобто символом завершення рядка є нуль-байт). Передбачити операції створення, знищення, ініціалізації об’єкту, а також операції динамічного присвоєння та конкатенації. Операції створення, знищення та ініціалізації реалізувати за допомогою конструкторів та деструкторів, решту операцій - за допомогою компонентних функцій.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 4
Створити клас для роботи з множинами цілих чисел використовуючи як базову структуру динамічний одновимірний масив. Максимальна кількість елементів множини - 65535, інтервал значень елементів множини [0, 65535]. Передбачити функції для виконання таких операцій:
- ініціалізація за допомогою зовнішнього масиву відповідного типу;
- введення з клавіатури і з файлу;
- виведення на екран та у файл;
- об’єднання множин;
- переріз множин;
- перевірка еквівалентності.
Написати програму, яка доводить правильність роботи створеного класу.
Вказівка
Множина є набір елементів, кожен з яких має унікальне значення.
Варіант 5
Створити класи List та Elementдля роботи із структурою типу "однозв’язний список". Клас Listповинен відповідати списку у цілому, а клас Element-елементу списка. Інформаційний компонент елементу списка - рядок символів (можна застосувати бібліотечний тип string). У зазначених класах передбачити функції для виконання таких операцій:
List::pushbeg - створити новий елемент списку у його початку;
List::pushend - створити новий елемент списку у його кінці;
List::popbeg - добути і вилучити перший елемент списку;
List::popend - добути і вилучити останній елемент списку;
Element::print - вивести на екран значення наданого елементу списка;
List::print - вивести на екран значення всіх елементів списка.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 6
Створити клас Astack - стек, що базується на масиві фіксованого розміру. Передбачити, щоб стек мав можливість вміщувати значення типу string (рядок символів).
Передбачити функції для виконання таких операцій:
push - занести у стек нове значення;
get-добути значення із вершини стека;
pop - добути і вилучити значення із вершини стека;
print - вивести усі значення стека на екран;
num - повернути кількість значень, що знаходяться у стеку.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 7
Створити клас Aqueue - структура типу черга, що базується на масиві фіксованого розміру. Передбачити, щоб черга мала можливість вміщувати значення типу string (рядок символів). Передбачити функції - члени класу для виконання таких операцій:
push - занести у чергу надане значення;
pop - добути і вилучити значення із черги;
print - вивести усі значення із черги на екран;
num - повернути кількість значень, що знаходяться у черзі.
Написати програму, яка доводить правильність роботи створеного класу.
Варіант 8
Створити клас Bitv для роботи з бітовими векторами довільної довжини. Бітовий вектор - послідовність значень, які можуть мати значення 0 (не істина) або 1 (істина). Кожен елемент бітового вектору повинен займати у пам’яті один біт. Для розміщення бітового вектора у пам’яті застосувати динамічний масив відповідного розміру. Тип елемента масиву - носія бітового вектора - беззнаковий, розміром 1, 2 або 4 байти.
У класі Bitv передбачити такі функції:
Bitv() - конструктор без параметрів, створює бітовий вектор нульової довжини;
Bitv(char*) - конструктор для ініціалізації за допомогою значення, наданого текстовим рядком;
Bitv(Bitv&) - конструктор копіювання;
~Bitv() - деструктор;
Bitv operator~() - операція побітової інверсії;
Bitv operator&(Bitv&) - побітова операція "І" (кон’юнкція);
Bitv operator|(Bitv&) - побітова операція "АБО" (диз’юнкція);
Bitv& operator=(Bitv&) - операція присвоєння;
size() - розмір бітового вектора у пам’яті (кількість слів).
Написати програму, яка доводить правильність роботи створеного класу.