- •Об’єкто-орієнтоване
- •Методичні рекомендації та модульні завдання
- •§1. Об’єкт. Структура. Клас.
- •§2. Управління доступом до членів класу
- •§3. Перезавантаження функцій
- •§4. Шаблони функцій
- •§5. Конструктори
- •§6. Статичні члени класу
- •§7. Деструктори
- •§8. Перезавантаження операцій
- •§9. Друзі класу
- •§10. Бінарні й унарні операції
- •§11. Створення класів з підкласами. Агрегація
- •Файл реалізації “Stack.Cpp”
- •§12. Успадкування
- •§13. Ієрархія успадкування класів
- •Модуль 1 (20 балів)
- •Лабораторна робота №1 (6 балів)
- •Тема: Структури. Зовнішні функції і функції-члени структури.
- •Завдання
- •Варіанти завдань
- •Лабораторна робота №2 (6 балів) Тема: Перезавантаження операцій і функцій Завдання
- •Варіанти завдань
- •Лабораторна робота №3 (8 балів) Тема: Структури та класи Завдання
- •Варіанти завдань
- •Варіанти завдань
- •Визначити функції:
- •Визначити функції:
- •Визначити функції:
- •Визначити функції:
- •Визначити функції:
- •Варіанти завдань
- •Лабораторна робота №6 (8 балів) Тема: Абстрактні класи Завдання
- •Варіанти завдань
- •Модуль контроль (15 балів) Теоретичні питання
- •Теоретичні питання
- •Модуль контроль підсумковий (30 балів)
- •Тематика задач
- •Теоретичні питання
- •Розподіл балів і годин
- •Список літератури
- •Навчальне видання
- •Методичні рекомендації та модульні завдання
- •58012, Чернівці, вул. Коцюбинського, 2
Лабораторна робота №2 (6 балів) Тема: Перезавантаження операцій і функцій Завдання
Перезавантажити функції для різних типів вхідних даних, або створити шаблони функцій, або перевизначити операції для означених користувачем типів (нові типи задавати у вигляді структур).
Варіанти завдань
1. Створити функцію, яка на вхід одержує текст і перетворює його: відкидає повторні пробіли. Функція повинна повертати кількість відкинутих пробілів. Текст передавати в функцію по посиланню. Перезавантажити операцію "<<" виводу перетвореного рядка, в якій використати створену функцію.
2. Створити структуру, що визначає трикутник на площині. Перевизначити операції:
“++” – зсув трикутника на 10 пікселів вправо,
“--” – зсув трикутника на 10 пікселів вліво,
“<”– порівняння площ.
3. Cтворити структуру, що визначає вектор на площині. Перевизначити операції:
“!” – обчислення вектора, який отримується з даного поворотом на 90 градусів проти годинникової стрілки,
“-”– обчислення вектора, який протилежний даному і має з ним однакову довжину,
“++”– нормування вектора.
4. Створити функції, які інвертують масиви, що складаються з елементів типу int, double, а також – функцію, яка переставляє слова в реченні в зворотному порядку. Використати перезавантаження функцій і створити шаблон функції.
5. Створити функції, які порівнюють цілі числа, рядки символів, норми векторів і повертають
0, якщо дані рівні,
1, якщо перше більше/довше другого,
-1, якщо перше більше/довше другого.
Використати перезавантаження функцій.
6. Створити функції, які друкують квадратні корені з дійсного і комплексного числа і норму вектора. Використати перезавантаження функцій.
7. Створити функції, які знаходять максимальний елемент масивів, що складаються з елементів типу int, double, а також – функцію, яка знаходить максимальну довжину слова в рядку (тип char*). Використати перезавантаження функцій і створити шаблон функції.
8. Визначити операцію ++ обчислення визначника матриці методом Гаусса. Використати перезавантаження операторів.
9. Перезавантажити операції “<<”, “>>” для вводу і виводу транспонованих цілих і дійсних матриць розмірністю nxm.
10. Визначити операцію логічного віднімання двох рядків символів S3=S1-S2. Рядок S3 складається з символів, які належать рядку S1 і не належать S2. Використати перезавантаження операторів.
11. Визначити операції “+”, “-“, “*”, “/” для комплексного числа. Обчислити вираз z=(x+y)/(x-y)+xy/(x+y). Використати перезавантаження операторів.
12. Визначити операції “+”, “-“, “*” для матриць (nxn). Обчислити вираз D=A*B+C*A-A*C. Використати перезавантаження операторів.
13. Визначити операції “+”, “-“, “*” для векторів розмірності n. Обчислити вираз d=(a+b)(a-b). Використати перезавантаження операторів.
14. Визначити операцію логічного додавання двох рядків символів S3=S1+S2. Рядок S3 складається з символів, які належать хоча б одному рядку S1 або S2. Використати перезавантаження операторів.
15. Визначити операцію логічного множення двох рядків символів S3=S1*S2. Рядок S3 складається з символів, які належать рядкам S1 і S2 одночасно. Використати перезавантаження операторів.
16. Трійка чисел (x,y,r) визначає круг на площині. Визначити операції
“+”, “-“ , “*” для двох кругів:
"+" – площа об’єднання,
"*" – площа перетину,
"-" – площа різниці.
Використати перезавантаження операторів.
17. Четвірка чисел (x1,y1,x2,y2) визначає прямокутник на площині.
(x1,y1)
Визначити операції (x2,y2)
“+”, “-“ , “*” для двох прямокутників:
"+" – площа об’єднання,
"*" – площа перетину,
"-" – площа різниці.
Використати перезавантаження операторів.
18. Масив чисел А(n) визначає многочлен a0 +a1 x +a2 x2 +…+ an-1 xn-1.
Визначити операції “+”, “-“ , “*” многочленів. Коефіцієнти зберігаються в пам’яті у вигляді масиву. Використати перезавантаження операторів.
19. Масив чисел А(n) визначає многочлен a0 +a1 x +a2 x2 +…+ an-1 xn-1. Визначити операцію “++” – обчислення значення многочлена в точці. Коефіцієнти зберігаються в пам’яті у вигляді списку. Використати перезавантаження операторів.
20. Перезавантажити операції “<<” і “>>” для виводу і вводу комплексного числа, а також операцію “==” порівняння модулів двох комплексних чисел.
21. Перезавантажити операції “<<” і “>>” для виводу і вводу структури. В структурі зберігаються відомості про кількість пар у кожний день тижня в комп’ютерному класі.
22. Перезавантажити операцію “*” для множення двох комплексних чисел, множення дійсного і комплексного числа, обчислення скалярного добутку двох векторів.
23. Для рядків символів перезавантажити операції:
"– " (унарний мінус). Перевертає рядок на своєму місці.
"*" (множення цілого числа k на рядок s).
Якщо к>0, то в результаті одержується рядок із k повторень рядка S. Якщо k<0, то в результаті одержується із k повторень перевернутих рядків S.
24. Визначити операції:
a & b – векторний добуток векторів,
! a – нормування вектора.
Обчислити вираз a & a, a & b, ! a.
25. Перезавантажити операції “<<” та “>>” для вводу і виводу многочленів степеня n з дійсними коефіцієнтами.
26. Визначити операції “+”, “-“, “*”,”/” для дробів P/Q, де PєZ, QєN. Перезавантажити ці операції. Обчислити вираз a/d-(a+b)/(cd), a,b,c,d – дроби.
27. Визначити структуру, яка визначає прямокутник на площині. Визначити операції “<<”, “>>“ для прямокутників:
">>" – ввід інформації про координати і назву прямокутника,
"<<" – вивід інформації про прямокутник (назва, координати, площа).
28. Масив чисел A(n) визначає многочлен з цілими коефіцієнтами a0 +a1 x +a2 x2 +…+ an-1 xn-1 . Визначити операцію ! – знаходження похідної від многочлена.
29. Для множин, які зберігаються в пам’яті у вигляді бінарних векторів розмірності n перевизначити операції:
"+" – об’єднання множин,
"*" – перетину множин,
">>" – ввід множини.
30. Для множин, які зберігаються в пам’яті у вигляді бінарних векторів розмірності n перевизначити операції:
"-" – різниці множин,
"^" – доповнення множин,
"<<" – вивід множини.
31. Створити функції, які знаходять довжину вектора на площині, довжину вектора у просторі, довжину речення (кількість слів). Використати перезавантаження функцій.
32. Створити функції, які знаходять висоту трапеції, висоту паралелограма, максимальну висоту трикутника. Використати перезавантаження функцій.
Визначити операцію добутку “*” матриці розмірності n x n на вектор розмірності n та навпаки (вектора на матрицю).
Масиви чисел визначають многочлени з цілими коефіцієнтами A(n) = a0 +a1 x +a2 x2 +…+ an-1 xn-1 та B(m) = b0 +b1 x +b2 x2 +…+ bm-1 xm-1. Визначити операцію “/” –ділення цих многочленів. Результат – два многочлени P(r) та Q(l) такі, що A(n) = P(r)*B(m) + Q(l).