Лабораторна робота № 2 "Перевантаження функцій і операцій" Завдання Написати програму алгоритмічною мовою С++ згідно із завданням, отриманим від викладача за табл. 1. Реалізувати заданий класовий тип із заданими методами, використовуючи механізм перевантаження функцій та операцій, а також значення параметрів за замовчуванням. Написати фрагмент програми з використанням класового типу та заданих методів. Зміст звіту Завдання. Блок-схеми алгоритмів функцій. Текст програми. Результат виконання програми. Таблиця 1 № п/п Класовий тип Методи класу
1 Комплексне число Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без ініціалізації. Перевантажити операції +, -, *, виводу <<, вводу >>, ==, >, < для об'єктів класу, а також дружні операції +, -= для масивів комплексних чисел.
2 Одномірний масив A[N] Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без ініціалізації. Перевантажити операції +, *<тип>, виводу <<, вводу >>, =, == для об'єктів класу, а також дружні операції <тип>*, -=<тип>.
3 Двомірний масив A[N][N] Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без ініціалізації. Перевантажити операції +, *, =, виводу <<, вводу >> для об'єктів класу, а також дружні операції <тип>+, /=<тип>.
4 Динамічний одномірний масив *p Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без неї. Визначити конструктор копій. Перевантажити операції +, =, виводу <<, вводу >> для об'єктів класу, а також дружні операції *=<тип>, <тип>+.
5 Динамічний двомірний масив **p Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без неї. Визначити конструктор копій. Перевантажити операції -, =, виводу <<, вводу >> для об'єктів класу, а також дружні операції <тип>*, +=.
6 Прямокутник зі сторонами a і b Конструктор повинен дозволяти ініціалізацію прямокутника і спрощену ініціалізацію квадрата. Визначення площі. Перевантажити операції ==, <, >, виводу <<, вводу >>, а також дружню операцію *=<тип>.
7 Трикутник із основою a , висотою h та кутами при основі ?? і????? Конструктор повинен дозволяти спрощену ініціалізацію прямокутного та рівностороннього трикутників. Визначення площі, визначення периметра. Перевантажити операції ==, <, >, виводу <<, вводу >>, а також дружню операцію /=<тип>.
8 Еліпс з радіусами rx і ry Конструктор повинен дозволяти спрощену ініціалізацію кола. Визначення площі, визначення периметра. Перевантажити операції ==, <, >, виводу <<, вводу >>, а також дружню операцію *=<тип>.
9 Відрізок на координатній площині [p1;p2] Конструктор повинен визначати довільний або одиничний відрізок в центрі координат. Визначення довжини відрізка. Перевантажити операції ==, <, >, виводу <<, вводу >>, а також дружню операцію <<= для повороту відрізка на кут ?.
10 N-кутник на координатній площині [p1;p2;...;pN] Конструктор повинен визначати довільний N-кутник з можливістю ініціалізації. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію >>= для переміщення N-кутника на [dx;dy].
11 Двійковий 12-розрядний регістр Конструктор повинен дозволяти ініціалізацію регістра довільним значенням або нулем. Перевантажити операції ++, ==, виводу <<, вводу >>, а також дружні операції -=<int>, <<=<int>.
12 Відрізок в просторі [p1;p2]; Конструктор повинен визначати довільний або одиничний відрізок в центрі координат. Визначення довжини відрізка. Перевантажити операції ==, <, >, виводу <<, вводу >>, а також дружню операцію *= для маштабування відрізка на [sx; sy].
13 Трикутник в просторі [p1;p2;p3] Конструктор повинен визначати довільний або рівносторонній трикутник в центрі координат. Визначення периметра. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію <<= для повороту трикутника на кут ?.
14 Прямокутник в просторі [p1;p2;p3;p4]; Конструктор повинен визначати довільний прямокутник або квадрат в центрі координат. Визначення площі. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію *= для масштабування прямокутника на [sx; sy].
15 N-кутник в просторі [p1;p2;...;pN] Конструктор повинен визначати довільний N-кутник з можливістю ініціалізації. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію >>= для переміщення N-кутника на [dx; dy].
16 Символьний рядок Конструктор повинен дозволяти створювати символьний рядок довільного розміру та при необхідності ініціалізувати його. Визначити конструктор копій. Перевантажити операції присвоєння =, порівняння ==, вилучення з рідка заданого символу -, виводу << і вводу >>.
17 Прямокутна матриця nxm Конструктор повинен створювати матрицю заданої розмірності з можливістю ініціалізації. Визначити конструктор копій. Перевантажити операції +, =, ==, *, виводу << і вводу >> для об'єктів класу.
18 Дата визначена в форматі дд.мм.рр. Конструктор повинен дозволяти створювати об’єкти з ініціалізацією. Реалізувати операції =, ==, <, >, -, +=<int>, виводу << і вводу >> для об'єктів класу.
19 Поліном виду
Конструктор повинен дозволяти створювати поліном з ініціалізацією. Реалізувати операції =, ==, <, >, -, *=<int>, виводу << і вводу >> для об'єктів класу.
20 Множина цілих чисел Конструктор повинен дозволяти створювати множину з ініціалізацією. Реалізувати операції ==, &&(перетин множин), ||(об'єднання множин), +=(внесення нового елемента), -=(вилучення заданого елемента), виводу << і вводу >> для об'єктів класу.
21 Раціональний дріб виду Конструктор повинен дозволяти створювати множину з ініціалізацією. Реалізувати операції ==, +, -, *, /, виводу << і вводу >> для об'єктів класу.
22 Комплексне число, задане своїм модулем A і кутом ??
Конструктор повинен дозволяти створювати об'єкти з ініціалізацією і без ініціалізації. Перевантажити операції +, -, *, ==, >, <, виводу << і вводу >> для об'єктів класу.
23 Час визначений в форматі год.хв.сек. Конструктор повинен дозволяти створювати об’єкти з ініціалізацією. Реалізувати операції =, ==, <, >, -, +=<int>, виводу << і вводу >> для об'єктів класу.
Питання для самоконтролю Поясніть призначення перевантажених функцій. Які завдання вирішуються перевантаженням конструкторів. Чому не можна перевантажувати деструктори? Які побічні ефекти усуваються з допомогою конструкторів копій? Коли виникає неоднозначність виклику перевантажених функцій? Поясніть призначення та загальний синтаксис перевантаження операцій. Коли виникає необхідність перевантажених операцій як дружніх?