- •Индивидуальные задачи по дисциплине «Объектно-ориентированные системы и технологии»
- •Тема 1. Оголошення класів. Приховання даних. Конструктори й деструктори. Перевантаження функцій і конструкторів. Аргументи за замовчуванням
- •Тема 2. Масиви об'єктів. Покажчики на об'єкти
- •Тема 3. Перевантаження операторів
- •Тема 4. Спадкування
- •Int X, y; // значення координат
- •Тема 5. Основи організації уведення й виводу даних. Користувальницькі функції уведення й виводу об'єктів. Файлове уведення й вивід
- •Int tos; // індекс вершини стека
- •Void push(char ch); // приміщення символу в стек
- •Тема 6. Підвищений рівень складності
- •Література
Тема 3. Перевантаження операторів
3.1. Нехай даний клас для зберігання й обробки комплексних чисел:
class complex
{ double re; // реальна частина
double im; //мнима частина
public:
complex() {re=0; im=0;}
complex(double i, double j) {re=i; im=j;}
void get(double &i, double &j) {i=re; j=im; }
//...
};
Для класу complex перевантажте оператори порівняння < і >(порівнюються модулі комплексних чисел) за допомогою функцій – членів класу complex.
3.2. Нехай даний клас
class three_d {
int x, y, z;
public:
three_d(int i, int j, int k);
three_d() ;
void get (int &i, int &j, int &k);
};
Перевантажте для цього класу оператори +, – , ++ і – – за допомогою функцій-членів класу. (Для операторів інкремента й декремента перевантажте тільки префіксну форму.)
3.3. Для класу strtype перевантажте оператор []. Цей оператор повинен повертати символ по заданому індексу. Крім цього, необхідна можливість задавати оператор [] у лівій частині інструкції присвоювання.
#define SIZE 255
class strtype {
char *p;
int len;
public:
strtype (); // конструктор
-strtype (); // деструктор
void set (char *ptr) ;
void show ( ) ;
};
3.4. Перевантажте оператори зсуву >> і << щодо класу coord так, щоб стали можливими наступні типи операцій:
ob << integer
ob >> integer
Упевніться, що ваші оператори дійсно зсувають значення х и y на задану кількість розрядів.
class coord {
int x, y; // значення координат
public:
coord () ;
coord (int i, int j);
void get_xy(int &i, int &j) ;
};
3.5. Перевантажте оператор + для класу three_d
class three_d {
int x, y, z;
public:
three_d(int i, int j, int k);
three_d() ;
void get (int &i, int &j, int &k);
};
так, щоб мати можливість виконувати наступні типи операцій:
ob + int;
int + ob;
3.6. Перевантажте оператори = = та != | щодо класу three_d (див. завд. 3.5) для порівняння двох об`єктів.
3.7. Нехай даний клас для зберігання й обробки комплексних чисел:
class complex
{ double re; // реальна частина
double im; //мнима частина
public:
complex() {re=0; im=0;}
complex(double i, double j) {re=i; im=j;}
void get(double &i, double &j) {i=re; j=im; }
//...
};
Для класу complex перевантажте оператори порівняння = = і != (порівнюються модулі комплексних чисел) за допомогою функцій – дружніх класу complex.
3.8. Для класу complex (див. завдання 3.7) перевантажте унарний оператор мінус (–) за допомогою функції - дружньої класу complex.
3.9. Для класу complex (див. завдання 3.7) перевантажте унарний оператор інкременту (++) за допомогою функції - дружньої класу complex. (Забезпечте різницю між постфіксною і префіксною записами інкременту.)
3.10. Для класу complex (див. завдання 3.7) перевантажте бінарні оператори множення (*) і ділення ( / ) за допомогою функцій - членів класу complex.
3.11. Для класу complex (див. завдання 3.7) перевантажте унарний оператор декременту ( – –) за допомогою функції - дружньої класу complex. (Забезпечте різницю між постфіксною і префіксною записами декременту.)
3.12. Для класу complex (див. завдання 3.7) перевантажте унарний оператор (!), що реалізує комплексне сполучення, за допомогою функції - дружньої класу complex.
3.13. Для класу complex (див. завдання 3.7) перевантажте унарний оператор мінус (–) за допомогою функції - члена класу complex.
3.14. Для класу complex (див. завдання 3.7) перевантажте унарний оператор (!), що реалізує комплексне сполучення, за допомогою функції - члена класу complex.
3.15. Для класу complex (див. завдання 3.7) перевантажте бінарні оператори додавання (+) і вирахування ( - ) за допомогою функцій - дружніх класу complex.
3.16. Для класу complex (див. завдання 3.7) створіть перевантажений оператор перетворення об'єкта даного класу в рядок і в ціле число (реальна частина).
3.17. Для класу three_d (див. завдання 3.6) створіть перевантажений оператор перетворення об'єкта даного класу в рядок.
3.18. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажите щодо цього класу унарний оператор ! , що повертає істину якщо дане поле є білим, у противному випадку повертає неправду.
3.19. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу оператори = = і !=, які відповідно істинність висловлення: «Дані поля мають однакові кольори».
3.20. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу бінарний оператор +(за допомогою дружньої функції), що повертає істину, якщо «Тура за один хід може перейти з одного поля на інше».
3.21. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу бінарний оператор * (за допомогою функції-члена класу), що повертає істину, якщо «Король за один хід може перейти з одного поля на інше».
3.22. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу бінарний оператор / (за допомогою дружньої функції), що повертає істину, якщо «Слон за один хід може перейти з одного поля на інше».
3.23. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу бінарний оператор - (за допомогою функції-члена класу), що повертає істину, якщо «Ферзь за один хід може перейти з одного поля на інше».
3.24. Створіть клас chess (шахи), у якому зберігаються поля шахівниці x, y (цілі числа, що лежать у діапазоні 1-8). Ліве нижнє поле дошки (1, 1) є чорним. Перевантажте щодо даного класу бінарний оператор + (за допомогою дружньої функції), що повертає істину, якщо «Кінь за один хід може перейти з одного поля на інше».
3.25. Створіть клас date (дата), у якому зберігаються два цілих числа: D (день) і M (місяць), що визначають правильну дату. Перевантажте щодо даного класу оператор перетворення об'єкта даного класу в рядок, що буде містити відповідній даній даті знак Зодіаку: «Водолій» (20.1-18.2), «Риби» (19.2-20.3), «Овен» (21.3-19.4), «Телець» (20.4-20.5), «Близнюки» (21.5-21.6), «Рак» (22.6-22.7), «Лев» (23.7-22.8), «Діва» (23.8-22.9), «Терези» (23.9-22.10), «Скорпіон» (23.10-22.11), «Стрілець» (23.11-21.12), «Козеріг» (22.12-19.1).