time_route() – розрахувати час руху.
Варіант 6. Створити клас для роботи з одновимірними динамічними масивами значень типа unsigned int. Передбачити функції-компоненти класу для виконання наступних операцій: динамічного присвоєння; поелементного складання та віднімання; об’єднання двох масивів у один (конкатенація); упорядкування масиву по збільшенню та по зменшенню; консольне введення та виведення масиву.
Варіант 7. Створити динамічний клас для роботи з рядками символів. Максимальна довжина послідовності – 65535 символів. Передбачити функції для виконання наступних операцій: ініціалізація з ASCIZ–рядка (тобто з рядка, що завершується нуль–байтом); введення з клавіатури; виведення на екран; повернення кількості символів у рядку; конкатенація рядків; пошук підрядка; пошук і заміна підрядка.
Варіант 8. Створити динамічний класовий тип для роботи з рядками символів. Максимальна довжина рядка – 65535 символів. Вважати, що довжина рядка зберігається в нульовому елементі масиву. Передбачити операції створення, знищення, ініціалізації об’єкта, а також операції динамічного присвоєння та конкатенації. Операції створення, знищення та ініціалізації реалізувати за допомогою конструкторів та деструкторів, решту операцій – за допомогою компонентних функцій.
Варіант 9. Створити клас для роботи з множинами цілих чисел. Максимальна кількість елементів множини – 65534, інтервал значень елементів множини відповідає типу int. Передбачити функції для виконання наступних операцій: ініціалізація за допомогою масиву цілого типу; введення з клавіатури; виведення на екран; об’єднання множин; віднімання множин; перетин множин; перевірка відношення включення; перевірка еквівалентності; перевірка належності даного числа до множини.
Варіант 10. Створити клас List для роботи зі структурою типа "однозв’язний список". Елемент списку має тип, що відповідає бібліотечному класу string. Передбачити функції для виконання наступних операцій:
рutinbeg() – створити новий елемент списку у його початку;
getoutbeg() – добути і вилучити перший елемент списку;
putinend() – створити новий елемент списку у його кінці;
getoutend() – добути і вилучити останній елемент списку;
print() – вивести список на екран;
isempty() – повернути значення true (тип bool), якщо список порожній.
Варіант 11. Створити клас Astack – стек, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб стек мав можливість зберігати значення типу, що відповідає бібліотечному класу string. Передбачити функції для виконання наступних операцій:
рush()– занести у стек значення типу Тype;
pop() – добути та вилучити значення з вершини стека;
print() – вивести всі значення стека на екран;
num() – повернути кількість значень, що знаходяться у стеку;
isempty() – повернути значення true (тип bool), якщо стек порожній.
Варіант 12. Створити клас Aqueue – структура типу черга, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб черга мала можливість вміщувати значення типу, що відповідає бібліотечному класу string. Передбачити функції – члени класу для виконання таких операцій:
аdd() – занести у чергу надане значення;
pop() – добути і вилучити значення із черги;
print() – вивести усі значення із черги на екран;
num() – повернути кількість значень, що знаходяться у черзі;
isempty() – повернути значення true (тип bool), якщо черга пуста.
Варіант 13. Створити клас Lstack – стек, що базується на структурі зв’язного списку. Передбачити можливість зберігання значення, що відповідають бібліотечному класу string. Передбачити функції-члени класу для виконання наступних операцій:
рush() – занести у стек надане значення;
pop() – добути і вилучити значення із вершини стека;
print() – вивести усі значення стека на екран;
num() – повернути кількість значень, що знаходяться у стеку;
isempty() – повернути значення true (тип bool), якщо черга порожня. Вказівки: передбачити обробку виключної ситуації: добування значення із порожнього стека.
Варіант 14. Створити клас Lqueue – структура типу "черга", що базується на структурі зв’язного списку. Тип значення елементів черги – int.. Передбачити функції для виконання таких операцій:
аdd() – занести у кінець черги значення типу Тype;
pop() – добути і вилучити значення із початку черги;
print() – вивести усі значення, що знаходяться у черзі, на екран;
num() – кількість значень, що знаходяться у черзі;
isempty() – повернути значення true (тип bool), якщо черга пуста.
Вказівки: передбачити обробку виключної ситуації: добування значення із порожньої черги.
Варіант 15. Створити клас Set для роботи зі структурами типу "Множина". Тип елементу структури обрати самостійно. Множина є набір елементів, кожний з яких має унікальне значення. При додаванні елемента (операція include), який вже є у множині, він не додається. Для цієї структури визначаються операції, звичайні для математичних множин – об’єднання, переріз, віднімання, доповнення. Елементи множини можуть автоматично упорядковуватися, що дає змогу використовувати швидкі операції пошуку елемента з наданим значенням. Передбачити функції-члени класу для виконання таких операцій:
іnclude() – додати новий елемент у множину;
exclude() – вилучити наданий елемент із множини;
union() – об’єднання множин;
inters() – переріз множин;
substr() – віднімання множин;
print() – вивести усі значення із множини на екран;
num() – кількість значень множини (потужність).
Варіант 16. Створити клас Bitv для роботи з бітовими векторами довільної довжини. Бітовий вектор – послідовність значень, які можуть мати значення 0 (не істина) або 1 (істина). Кожен елемент бітового вектору повинен займати у пам’яті один біт. Для розміщення бітового вектора у пам’яті застосувати динамічний масив відповідного розміру. Тип елемента масиву – носія бітового вектора – беззнаковий, розміром 1, 2 або 4 байти. У класі Bitv передбачити такі функції:
Bitv() – конструктор без параметрів;
Bitv(char*) – конструктор для ініціалізації за допомогою значення, наданого символьним рядком;
Bitv(Bitv&) – конструктор копіювання;
~Bitv() – деструктор;
void setin0(int) – встановлення біта з наданим номером у 0;
void setin1(int) – встановлення біта у 1;
void flip(int) – інвертування біта з наданим номером;
void print() – виведення бітового вектора на екран;
size() – розмір бітового вектора (кількість слів).
Чим відрізняється динамічний клас від статичного класу?
Яку структуру має об’єкт динамічного класу, у чому полягають його особливості?
Поясніть особливості виконання операції присвоєння для об’єктів динамічного класу.
У чому полягають особливості операцій створення та знищення об’єктів динамічного класу?
Коли використовується конструктор копіювання?
Де у Вашій програмі використовується конструктор копіювання?
На що вказує покажчик *this?
Особливості присвоювання значень об’єктів.
Розкрийте алгоритм передачі об’єкта класу як параметра функції.
Який механізм повернення значень типа клас?
Чи можливо об’єкти класу передавати за посиланням?
Мета роботи – навчитись використовувати спадкування при розробці інтерфейсу програм..
Застосувавши конспект лекцій та додаткову літературу, вивчити основні принципи спадкування
Виконати індивідуальне завдання відповідно до номера варіанта застосувавши мову програмування С++.
Оформити звіт.
Зробити висновки.
Варіант 1. Розробити клас CFile, що інкапсулуює у себе такі функції работы с файлами, як Open, Close, Seek, Read, Write, GetPosition и GetLength. На базе цього класу створити похідний клас CMyDataFile — файл, що містить дані деякого визначеного типу MyData, а також заголовок, що облегшує доступ до цього файлу.
Варіант 2. Описати базовий клас Рядок. Об’єкти класу повинні містити наступні дані: покажчик на сhar, що зберігає адресу динамічно виділеної пам'яті для розміщення символів рядка; значення типа int, що зберігає довжину рядка в байтах.
Клас повинен містити наступні методи: конструктор без параметрів; конструктор, який приймає у якості параметра Си-строку (закінчуєтся нульовим байтом); конструктор, що приймає у якості параметра символ; конструктор копіювання; отримання довжини рядка; очищення довжини рядка; очищення рядка (зробити рядок порожнім); деструктор.
Створити похідний від класу Рядок клас Пароль, для якого повинні виконувати наступні вимоги: рядки даного класу складаються з букв і цифр; регістр букв розрізняється; довжина пароля не може бути менше заданого числа; при введенні символи відображаються зірочками *.
Клас Пароль повинний містити: конструктор без параметрів; конструктор, який приймає у якості параметра Си-строку ( закінчуєтся нульовим байтом; конструктор копіювання; деструктор.
Варіант 3.Описати базовий клас Рядок, як у завданні варіанту 2.
Описати похідний від класу Рядок клас Рядок_Ідентифікатор.
Рядки даного класу строяться по правилах запису ідентифікаторів у мові С і можуть включати лише ті символи, які можуть входити до складу С-ідентіфікаторов. Якщо початкові дані протіворечать правилам запису ідентифікатора, то створюється порожній Рядок_Ідентифікатор.
Клас повинний містити: конструктор без параметрів; конструктор, який приймає у якості параметра Си-строку ( закінчуєтся нульовим байтом); конструктор, що приймає у якості параметра символ; конструктор копіювання; перевід всіх символів рядка у верхній регістр; перевід всіх символів рядка в нижній регістр; пошук першого входження символу в рядок; деструктор.
Варіант 4.Створити базовий клас Людина. Кожний об’єкт класу повинен містити наступні дані: ПІБ, рік народження, стать.
Клас повинен виконувати наступні дії: ініціалізація інформації, введення-виведення інформації.
Створити похідний клас Студент, що має додаткові дані: рік вступу, № залікової книжки, кількість дисциплін що вивчається, дисципліни (динамічний масив), середній бал.
Клас повинен виконувати наступні функції: ініціалізація інформації, додавання дисциплін, розрахунок середнього балу, виводити загальну інформацію про студента.
Варіант 5.Створити базовий клас Людина, відповідно до варіанту 4.
Створити похідний клас Інженер, що містить додаткові дані: рік закінчення, ВУЗ, спеціальність, тип диплому, тип навчання, перекваліфікація (динамічний масив), місце роботи, заробітня платня.
Клас повинен містити наступні методи: ініціалізації інформації, розрахунок заробітної платні, розрахунок щорічного доходу, додавання інформацій о перекваліфікації.
Варіант 6.Створити базовий клас Людина, відповідно до варіанту 4.
Створити похідний клас Користувач_бібліотеки, що містить наступні дані: номер читацького квитку, дата видачі, перелік книжок що видавались (динамічний масив), щомісячній читацький внесок, статус користувача.
Клас повинен містити наступні методи: ініціалізації інформації, розрахунок скидки (залежить від кількості виданих книжок), розрахунок щорічного читацького внеску, додавання інформацій о книжках, введення-виведення загальної інформації про користувача.
Варіант 7.Створити базовий клас Людина, відповідно до варіанту 4.
Створити похідний клас Співробітник, що містить наступні дані: табельний номер, початок роботи, кінець роботи, посада.
Клас повинен містити наступні методи: конструктор, деструктор, ініціалізацію інформації, методи для введення-виведення загальної інформації.
Чи відрізняється уява об’єкту похідного класу у пам’яті комп’ютера від атрибутів доступу?
На що впливають атрибути доступу?
Що означає множинне спадкування?
Перерахуйте основні правила спадкування.
Коли використовуються простір імен?
Що містить простір імен std?
Як підключити простір імен?
Чи можливо підключити декілька просторів імен?
Особливості організації простора імен С#.
Як зробити компоненти доступними у похідному класі, але закритими від зовнішнього доступу?
Мета роботи – навчитись використовувати перевантаження математичних операцій та операцій введення-виведення при розробці класів .
Застосувавши конспект лекцій та додаткову літературу, вивчити основні принципи перевантаження.
Виконати індивідуальне завдання відповідно до номера варіанта застосувавши мову програмування С++.
Оформити звіт.
Зробити висновки.
Варіант 1. Створити динамічний клас для роботи з рядками (послідовностями символів). Максимальна довжина послідовності – 65535, код завершення послідовності – нуль. Здійснити перевантаження символів операцій:
"=" – динамічне присвоєння,
" << " , " >> " – консольне введення-виведення значень;
" << " , " >> " - введення із файлу і виведення у файл.
Передбачити можливість множинного введення
Варіант 2. Створити динамічний клас для виконання операцій з динамічними масивами чисел дійсного типу. Зробити перевантаження символів операцій:
"=" – динамічне присвоєння,
"+" – по елементне додавання,
"–" – по елементне віднімання,
"*" – скалярне множення масивів,
"<<" – циклічний зсув елементів масиву уліво,
">>" – циклічний зсув елементів масиву управо,
"[]" – доступ до елементу з контролем.
Тип елементу масиву обрати самостійно.
Варіант 3. Створити динамічний клас для виконання операцій з динамічними масивами чисел дійсного типу. Зробити перевантаження символів операцій:
"=" – динамічне присвоєння,
" << " , " >> " – консольне введення-виведення значень;
" << " , " >> " - введення із файлу і виведення у файл з символами таким чином:
f << A або A >> f – виведення (запис) значення A у файл f,
f >> A або A << f – введення (читання) значення A із файлу f.
Тип елементу масиву обрати самостійно.
Варіант 4. Створити динамічний клас для роботи з рядками (послідовностями символів). Максимальна довжина послідовності – 65535, код завершення послідовності – нуль. Здійснити перевантаження символів операцій:
" + " – конкатенація (з’єднання) рядків,
" – " – вилучення підрядку,
" < " – відношення "менше",
" <= " – відношення "менше чи дорівнює",
" > " – відношення "більше",
" >= " – відношення "більше чи дорівнює",
" == " – відношення "дорівнює",
" != " – відношення "не дорівнює".
За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку (тобто того порядку, що реалізується у звичайному словнику або у картотеці).
Варіант 5. Створити динамічний клас для роботи з рядками (послідовностями символів). Максимальна довжина послідовності – 65535, код завершення послідовності – нуль. Здійснити перевантаження символів операцій:
"=" – динамічне присвоєння,
" << " , " >> " – консольне введення-виведення значень;
" << " , " >> " - введення із файлу і виведення у файл з символами таким чином:
f << A або A >> f – виведення (запис) значення A у файл f,