Лабораторна робота № 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>, виводу << і вводу >> для об'єктів класу.


Питання для самоконтролю
Поясніть призначення перевантажених функцій.
Які завдання вирішуються перевантаженням конструкторів.
Чому не можна перевантажувати деструктори?
Які побічні ефекти усуваються з допомогою конструкторів копій?
Коли виникає неоднозначність виклику перевантажених функцій?
Поясніть призначення та загальний синтаксис перевантаження операцій.
Коли виникає необхідність перевантажених операцій як дружніх?