Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
индивидуальные задачи по ООСТ.doc
Скачиваний:
2
Добавлен:
24.11.2019
Размер:
184.83 Кб
Скачать

Тема 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).