ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.08.2020
Просмотров: 1000
Скачиваний: 8
Вказівка.
Застосувати статичні компоненти класу.
Варіант 4
Створити клас Beta таким чином, щоб при знищенні останнього об’єкта на екран видавалося повідомлення про найбільшу кількість об’єктів типу Beta, що існували та час існування популяції об’єктів.
Вказівка.
Застосувати статичні компоненти класу.
Варіант 5
Створити клас Delta таким чином, щоб кожний об’єкт вміщував свій персональний номер (дескриптор об’єкта) та функцію, яка повертає його значення. Дескриптор об’єкта - унікальне для об’єктів даного типу ціле число.
Варіант 6
Створити клас таким чином, щоб він відстежував кількість існуючих у даний момент об’єктів та об’єм оперативної пам’яті, яку вони займають.
Вказівка.
Застосувати статичні компоненти класу.
Варіант 7
Створити клас для виконання операцій з комплексними числами. Передбачити операції:
- складанні та віднімання;
- множення та ділення;
- обчислення модулю;
- введення та виведення консольне;
- введення та виведення файлове;
- ініціалізацію.
Нижче наведені робочі формули для виконання деяких операцій над комплексними числами. Нехай z1 , z2 - є комплексні числа:
z1 = a1 + b1 i ,
z2 = a2 + b2 i .
Тоді робочі формули для виконання операцій множення та ділення будуть мати такий вигляд:
,
.
Варіант 8
Створити класовий тип для виконання операцій з плоскою фігурою - трикутником. Написати функції для виконання таких операцій:
- створення фігури на екрані;
- знищення фігури;
- переміщення у задану точку екрану;
- переміщення відповідно до наданого вектору;
- повернення на даний кут;
- зміна кольору фігури;
- заповнення фігури даним кольором.
Вказівка.
Клас та тестуючу програму створити під платформу DOS-Standard. Застосувати 16-розрядну графіку та спеціалізований модуль rgraph.h .
Варіант 9
Створити клас для роботи з датами з такими компонентами: число, номер місяця, рік. Передбачити ініціалізацію відповідними числами та рядком. Передбачити функції:
- порявняння дат (раніше, пізніше);
- різниця між датами (кількість днів);
- номер дня у поточному році;
- день тижня по наданій даті.
Лабораторна робота 3
Тема: динамічні класові типи
Варіант 1
Створити клас для роботи з одновимірними динамічними масивами значень типу unsigned int. Передбачити функції - компоненти класу для виконання таких операцій:
-
динамічного присвоєння;
- поелементного
складання та віднімання;
- об’єднання
двох масивів у один (конкатенація);
-
упорядкування масиву по збільшенню та
по зменшенню;
- консольне введення та виведення масиву.
Варіант 2
Створити динамічний клас для роботи з рядками символів. Максимальна довжина послідовності - 65535. Передбачити функції для виконання таких операцій:
- ініціалізація з ASCIZ-рядка (тобто з рядка, що завершується нуль-байтом);
- введення з клавіатури і з файлу;
- виведення на екран та у файл;
- повернення кількості символів;
- конкатенація рядків;
- пошук підрядка;
- пошук і заміна підрядка.
Варіант 3
Створити динамічний класовий тип для роботи з рядками символів. Максимальна довжина рядка - 65535 символів. Вважати, що кожен рядок завершується нуль-символом. Передбачити операції створення, знищення, ініціалізації об’єкту, а також операції динамічного присвоєння та конкатенації. Операції створення, знищення та ініціалізації реалізувати за допомогою конструкторів та деструкторів, решту операцій - за допомогою компонентних функцій.
Варіант 4
Створити клас для роботи з множинами цілих чисел. Максимальна кількість елементів множини - 65534, інтервал значень елементів множини відповідає типу int. Передбачити функції для виконання таких операцій:
- ініціалізація за допомогою масиву цілого типу;
- введення з клавіатури і з файлу;
- виведення на екран та у файл;
- об’єднання множин;
- віднімання множин;
- переріз множин;
- перевірка відношення включення;
- перевірка еквівалентності;
- перевірка належності даного числа до множини.
Варіант 5
Створити класи List та Element для роботи із структурою типу "однозв’язний список". Клас List повинен відповідати списку у цілому, а клас Element - елементу списка. Інформаційний компонент елементу списка - рядок символів (можна застосувати бібліотечний тип string). У зазначених класах передбачити функції для виконання таких операцій:
List
:: putinbeg - створити новий елемент
списку у його
початку;
List :: getoutbeg - добути і вилучити перший елемент списку;
List :: putinend - створити новий елемент списку у його кінці;
List :: getoutend - добути і вилучити останній елемент списку;
Element :: print -
вивести на екран рядок - інформаційний
компонент
елементу списка;
List
:: print - вивести на екран
інформаційні компоненти
всіх елементів списка.
Варіант 6
Створити клас Astack - стек, що базується
на масиві покажчиків фіксованого
розміру. Передбачити, щоб стек мав
можливість вміщувати значення типу, що
відповідає бібліотечному класу string.
Передбачити функції для виконання
таких операцій:
push - занести у стек значення типу Тype;
pop - добути і вилучити значення із вершини стека;
print - вивести усі значення стека на екран;
num - повернути кількість значень, що знаходяться у стеку.
Варіант 7 Створити клас Aqueue - структура типу черга, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб черга мала можливість вміщувати значення типу, що відповідає бібліотечному
класу
string.
Передбачити функції - члени
класу для виконання таких операцій:
add - занести у чергу надане значення;
pop - добути і вилучити значення із черги;
print - вивести усі значення із черги на екран;
num - повернути кількість значень, що знаходяться у черзі;
isempty - повернути значення true (тип bool), якщо черга пуста.
Варіант 8
Створити клас Lstack - стек, що базується на структурі зв’язного списку. Передбачити, щоб стек мав можливість вміщувати значення, що відповідають бібліотечному класу string. Передбачити функції - члени класу для виконання таких операцій:
push - занести у стек надане значення;
pop - добути і вилучити значення із вершини стека;
print - вивести усі значення стека на екран;
num - повернути кількість значень, що знаходяться у стеку;
isempty - повернути значення true (тип bool), якщо черга пуста.
Вказівки.
Передбачити обробку виключної ситуації: добування значення із порожнього стека.
Варіант 9
Створити клас Lqueue - структура типу "черга", що базується на структурі зв’язного списку. Тип значення, що зберігаються у черзі, обрати самостійно. Передбачити функції для виконання таких операцій:
add - занести у кінець черги значення типу Тype;
pop - добути і вилучити значення із початку черги;
print - вивести усі значення, що знаходяться у черзі, на екран;
num - кількість значень, що знаходяться у черзі;
isempty - повернути значення true (тип bool), якщо черга пуста.
Вказівки.
Передбачити обробку виключної ситуації: добування значення із порожньої черги.
Варіант 10
Створити клас Set для роботи із структурами типу "Множина". Тип елементу структури обрати самостійно.
Множина є набір елементів, кожен з яких має унікальне значення. При додаванні елементу (операція include), який вже є у множині, він не додається. Для цієї структури визначаються операції, звичайні для математичних множин - об’єднання, переріз, віднімання, доповнення. Елементи множини можуть автоматично упорядковуватися, це дає змогу використовувати швидкі операції пошуку елемента із наданим значенням.
Передбачити функції - члени класу для виконання таких операцій:
include - додати новий елемент у множину;
-
exclude - вилучити наданий елемент із множини;
union - об’єднання множин;
inters - переріз множин;
substr - віднімання множин;
print - вивести усі значення із множини на екран;
num - кількість значень множини (потужність).
Варіант 11
Створити клас Bitv для роботи з бітовими векторами довільної довжини. Бітовий вектор - послідовність значень, які можуть мати значення 0 (не істина) або 1 (істина). Кожен елемент бітового вектору повинен займати у пам’яті один біт. Для розміщення бітового вектора у пам’яті застосувати динамічний масив відповідного розміру. Тип елемента масиву - носія бітового вектора - беззнаковий, розміром 1, 2 або 4 байти.
У класі Bitv передбачити такі функції:
Bitv() - конструктор без параметрів;
Bitv(char*) - конструктор для ініціалізації за допомогою значення, наданого символьним рядком;
Bitv(Bitv&) - конструктор копіювання;
~Bitv() - деструктор;
Bitv operator~() - операція побітової інверсії;
Bitv operator&(Bitv&) - побітова операція "І" (кон’юнкція);
Bitv operator|(Bitv&) - побітова операція "АБО" (диз’юнкція);
Bitv& operator=(Bitv&) - операція присвоєння;
int
opeator[](int) - доступ до бітового елемента
(для читання) по
індексу;
void setin0(int) - встановлення біта з наданим номером у 0;
void setin1(int) - встановлення біта у 1;
void flip(int) - інвертування біта з наданим номером;
void print() - виведення бітового вектора на екран;
size() - розмір бітового вектора (кількість слів).
Лабораторна робота 4
Тема: перевантаження операцій
Варіант 1
Створити динамічний клас для виконання операцій з динамічними масивами чисел дійсного типу. Зробити перевантаження символів операцій:
"=" - динамічне присвоєння,
"+" - по елементне додавання,
"-" - по елементне віднімання,
"*" - скалярне множення масивів,
"<<" - циклічне переставлення елементів масиву уліво,
">>" - циклічне переставлення елементів масиву управо,
"[]" - доступ до елементу з контролем.
Тип елементу масиву обрати самостійно. У класі передбачити конструктор ініціалізації, конструктор копіювання, деструктор.
Варіант 2
Створити динамічний клас для роботи з рядками (послідовнос-
тями символів). Максимальна довжина послідовності - 65535, код завершення послідовності - нуль. Здійснити перевантаження символів операцій:
" + " - конкатенація (з’єднання) рядків,
" - " - вилучення підрядку,
" < " - відношення "менше",
" <= " - відношення "менше чи дорівнює",
" > " - відношення "більше",
" >= " - відношення "більше чи дорівнює",
" == " - відношення "дорівнює",
" != " - відношення "не дорівнює".
За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку (тобто того порядку, що реалізується у звичайному словнику або у картотеці). У класі передбачити конструктор ініціалізації, конструктор копіювання, деструктор.
Варіант 3
Створити динамічний клас для роботи з рядками. Максимальна довжина послідовності - 254. Перший байт повинен містити інформацію про фактичну кількість елементів масиву. Здійснити перевантаження операцій:
" = " - присвоєння,
" + " - конкатенація (з’єднання) рядків,
" <= " - відношення "менше чи дорівнює",
" >= " - відношення "більше чи дорівнює",
" == " - відношення "дорівнює",
" != " - відношення "не дорівнює".
У класі передбачити конструктор ініціалізації, конструктор копіювання, деструктор.
Варіант 4
Створити клас для роботи з множинами цілих чисел. Максимальна кількість елементів множини - 65534. Здійснити перевантаження символів операцій:
" = " - присвоєння,
" + " - об’єднання множин,
" - " - віднімання множин,
" * " - переріз множин,
" <= " - відношення включення (перевіряється, чи є множина, що надана лівим операндом, підмножиною множини, що надана правим операндом),
" == " - еквівалентність множин,
" != " - нееквівалентність множин,
" << " - належність (перевіряється, чи належить значення, що надане лівим операндом, до множини, що надана правим операндом),
У класі передбачити конструктор ініціалізації, конструктор копіювання, деструктор.
Варіант 5
Створити клас для виконання точних обчислень з раціональними числами. Здійснити перевантаження символів операцій:
" = " - присвоєння,
" + " - додавання,
" - " - віднімання,
" * " - добуток,
" == " , " != " - рівність, не рівність,
" < " , " <= " , " > " , " >= " - відношення порядку,
" << " , " >> " - читання з файлу та запис у файл.
Створити функцію скорочення раціонального числа (приведення до нормальної форми). У класі передбачити конструктор ініціалізації, конструктор копіювання, деструктор.
Варіант 6
Створити клас для виконання операцій з трьохвимірними векторами. Вважати, що компоненти вектора мають дійсний тип. Конкретний тип для компонентів вектора обрати самостійно. Здійснити перевантаження символів операцій:
" + " - додавання векторів,
" - " - векторне віднімання,
" * " - скалярний добуток векторів,
" == " , " != " - рівність, не рівність,
" << " , " >> " - читання з файлу та запис у файл.
Передбачити функцію обчислення довжини вектора, конструктор ініціалізації.
Лабораторна робота 5
Тема:
введення/виведення потоками, робота з
файлами,
створення нових потокових
операцій
Варіант 1
Створити динамічний клас для роботи з одновимірними масивами чисел дійсного типу. Здійснити перевантаження символів операцій:
" = " - динамічне присвоєння,
" + " - по елементне додавання,
" - " - по елементне віднімання,
" * " - скалярне множення масивів,
" [ ] " - доступ до елементу з контролем.
Крім того перевантажити операції введення із файлу і виведення у файл з символами " << " , " >> " таким чином:
f << A або A >> f - виведення (запис) значення A у файл f,
f >> A або A << f - введення (читання) значення A із файлу f.
Тип елементу масиву обрати самостійно.
Варіант 2
Створити динамічний клас для роботи з рядками символів. Максимальна довжина послідовності - 65535, код завершення послідовності - нуль. Здійснити перевантаження символів операцій:
" + " - конкатенація (з’єднання) рядків,
" - " - вилучення підрядку,
" < " - відношення "менше",
" <= " - відношення "менше чи дорівнює",
" > " - відношення "більше",
" >= " - відношення "більше чи дорівнює",
" == " - відношення "дорівнює",
" != " - відношення "не дорівнює".
За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку.
Крім того перевантажити операції введення із файлу і виведення у файл з символами " << " , " >> " таким чином:
f << A або A >> f - виведення (запис) значення A у файл f,
f >> A або A << f - введення (читання) значення A із файлу f, де f - покажчик на файл.
Варіант 3
Створити динамічний клас для роботи з рядками однобайтових символів. Максимальна довжина послідовності - 254. Перший байт робочого масиву повинен містити інформацію про фактичну кількість символів у рядку. Здійснити перевантаження символів операцій: