Лабораторна робота №4. Тема: Створення класів

В кожному варіанті розробити вказаний клас і протестувати його, для чого в основній програмі створити необхідну кількість об’єктів, використовуючи які, продемонструвати всі розроблені оператори і функції. Частину перевизначених операторів і функцій зробити дружніми, а частину – членами класу.

Варіанти завдань

1. Визначити клас: трикутник на площині. Він визначається трьома вершинами А(X1,Y1), B(X2,Y2), C(X3,Y3). Xi, Yi є R. Створити конструктор і деструктор.

Визначити операції:

«<<» друку інформації про об’єкт;

«==», «!=» порівняння двох об’єктів.

Визначити функції:

  • знаходження площі і периметра трикутника;
  • знаходження радіуса вписаного і описаного кола;
  • знаходження кутів при вершинах;
  • знаходження висот і медіан;
  • визначення типу трикутника (прямокутний, гострокутний, є тупий кут; рівнобедрений, рівносторонній);
  • графічного зображення об’єкта на екрані;
  • знаходження центрів описаного і вписаного кола;
  • повертання на заданий кут навколо центра описаного кола;
  • зсуву об’єкта вправо, вліво.

2. Визначити клас многочленів степеня n з дійсними коефіцієнтами P(x)=a0 +a1 x +a2 x2 +…+ an-1 xn-1, x є R.

Для збереження коефіцієнтів многочлена використати масив. Створити конструктори і деструктор.

Визначити операції:

«+», «-», «*» -додавання, віднімання і множення многочленів.

Визначити функції:

  • друку многочлена;
  • створення копії многочлена;
  • знаходження значення многочлена в точці;
  • знаходження частки і залишка від ділення многочлена на многочлен;
  • обчислення многочленів (x-a)P(x), P(x+a) (a задається), P’(x), P(Q(x)).

3. Визначити клас: довге ціле число. Для збереження числа використати масив (один елемент масиву - одна цифра числа). Створити конструктори i деструктор.

Визначити операції:

"+", "-", "*" додавання, віднімання, множення чисел;

"/" цілочислове ділення;

"%" залишок від ділення;

"==","!=",">","<","<=",">=" порівняння.

Визначити функції:

  • друку числа;
  • логічну функцію, яка визначає, чи дорівнює число нулю.

Визначити, чи є число 250+1 простим. Роздрукувати числа 210, 2100, 100!.

4. Створити клас: рядок символів. Рядок символів зберігається в пам’яті з допомогою однонапрямного зв’язного списку. Створити конструктори і деструктор.

Визначити операції:

«+» зчеплення двох рядків;

«==», «!=», «<», «>», «<=», «>=» операції порівняння двох рядків;

«<<» операцію друку рядка.

Визначити функції:

  • копіювання рядка;
  • знищення N символів рядка, починаючи з позиції Poz;
  • вставка рядка St1 в рядок St2, починаючи з позиції Рoz;
  • визначення довжини рядка;
  • виявлення першого входження в рядок St1 підрядка St2. Результат – номер позиції.

5. Створити клас: множина точок на площині. P(X,Y), X,Y є Z. Для збереження множини використати лінійний однонапрямний список. Створити конструктори і деструктор.

Визначити операції:

«*», «+», «-» перетин, об’єднання, різниця двох множин;

«==»,«!=», «>=», «<=» операції відношення множин;

«<< » операцію друку множини.

Визначити функції:

  • створення копії множини;
  • визначення кількості елементів в множині;
  • визначення належності точки до множини;
  • порівняння з порожньою множиною;
  • впорядкування множини по відстаням від точок до початку координат;
  • впорядкування множини по куту повороту відносно вісі ОХ.

6. Визначити клас: прямий паралелограм на площині. Паралелограм визначається числами (X1, Y1, X2, Y2, X3, Y3) , де Xi, Yi є N.

(X2, Y2) (X3, Y2)

(X1, Y1)

Створити конструктор і деструктор.

Визначити операції:

“+”, “*”, “-” площа об’єднання, перетину і різниці паралелограмів;

“==” порівняння паралелограмів на співпадання при переносі.

Визначити функції:

  • друку інформації про паралелограм;
  • знаходження площі і периметру об’єкта;
  • графічного зображення об’єкта;
  • знаходження гострого кута при вершині;
  • зсуву об’єкта на 10 пікселей вправо.

7. Створити клас: множина цілих чисел. Для представлення множини використати бінарний вектор. Створити конструктор і деструктор.

Визначити операції:

«*» – перетин двох множин;

«+» – об’єднання множин;

«-» – різниця двох множин;

«~» – доповнення множини;

«%»– симетричну різницю множин;

«==», «!=», «>=», «<=» – операції відношення множин;

«<<»,«>>» - операції вводу і виводу інформації про множину.

Визначити функції:

  • створення копії множини;
  • визначення кількості елементів в множині;
  • визначення, чи належить число до множини;
  • порівняння з порожньою множиною;
  • знаходження мінімального елемента множини.

8. Визначити клас многочленів з комплексними коефіцієнтами P(x)=a0 +a1 x +a2 x2 +…+ an-1 xn-1, x є C, ak =u+iv, u є Z, v є Z. Для збереження коефіцієнтів в пам’яті використати лінійний однонапрямний зв’язний список. Створити конструктори і деструктор

Визначити операції:

«+»,«-», «*» додавання, віднімання, множення многочленів;

«==» операцію порівняння многочленів.

Визначити функції:

· друку многочлена;

· створення копії многочлена;

· обчислення значення многочлена в точці a;

· друку многочлена Р(x+а) для заданного a.

9. Визначити клас многочленів довільного степеня з цілими коефіцієнтами P(x)=a0 +a1 x +a2 x2 +…+ an-1 xn-1.

Для збереження коефіцієнтів в пам’яті використати лінійний однонапрямний зв’язний список. Створити конструктори і деструктор

Визначити операції:

«+»,«-», «*» додавання, віднімання, множення многочленів;

«<<»,«>>» операції виводу і вводу многочленів.

Визначити функції:

  • перевірки рівностей двох многочленів;
  • створення копії многочлена;
  • знаходження значення многочлена в точці;
  • обчислення многочленів Р(x+а), (x-а)Р(x), Р’(x) для заданного a;
  • графічного зображення функції y=Р(x).

10. Визначити клас многочленів з раціональними коефіцієнтами коефіцієнтами P(x)=a0 +a1 x +a2 x2 +…+ an-1 xn-1, x є Q, ak =uk/vk, uk є Z, vk є N.

Для збереження коефіцієнтів використати один двовимірний або два одновимірні масиви. Створити конструктор та деструктор.

Визначити операції:

«+» додавання двох многочленів;

«-» віднімання двох многочленів;

«*» множення двох многочленів;

«<<» друку многочлена;

«==» порівняння двох многочленів.

Визначити функції:

  • створення копії многочлена;
  • скорочення раціонального дробу;
  • знаходження значення многочлена в точці;
  • знаходження Р’(х), Р(х+а).

11. Визначити клас: комплексне число. Створити конструктори і деструктор.

Визначити операції:

«+»,«-»,«*»,«/» - арифметичні операції;

«=» – присвоєння;

«!» – отримання спряженого числа.

Створити функції:

  • друку комплексного числа;
  • створення копії;
  • знаходження кореня n-го степеня з комплексного числа;
  • знаходження |z|, Arg z, za (a–дійсне число);
  • обчислення з заданою точністю за допомогою рядів

12. Створити клас матриць розмірності n х n з дійсними коефіцієнтами. Визначити конструктор і деструктор.

Визначити операції:

«+»,«-»,«*» для матриць;

«<<» друку матриці;

«>>» вводу матриці;

«==» порівняння матриць.

Визначити функції:

  • знаходження визначника матриці;
  • знаходження оберненої матриці;
  • знаходження норми матриці;
  • знаходження сліду матриці;
  • функцію, яка визначає, чи є матриця симетричною.

13. Визначити клас векторів розмірності n. Створити конструктори і деструктор.

Визначити операції:

«+»,«-» додавання і віднімання векторів;

«*» скалярний добуток векторів;

«>>» вводу вектора;

«^» множення вектора на число.

Визначити функції:

  • друку вектора;
  • знаходження довжини вектора;
  • створення копії вектора;
  • сортування елементів вектора;
  • нормування вектора.

14. Створити клас: рядок символів Рядок символів зберігається як в мові Паскаль. Для його збереження використовується масив символів. В нульовому елементі зберігається поточна довжина рядка. Створити конструктори і деструктор.

Визначити операції:

«+» зчеплення двох рядків;

«%» логічне додавання (добавляються тільки ті символи з другого рядка, яких немає в першому рядку);

«==»,«!=»,«<»,«>»,«<=»,«>=» операції порівняння двох рядків.

Визначити функції:

  • друку рядка;
  • копіювання рядка;
  • знищення N символів рядка, починаючи з позиції Poz;
  • вставки рядка st1 в рядок st2, починаючи з позиції Poz;
  • визначення довжини рядка;
  • виявлення першого входження в рядок st1 підрядка st2. Результат - номер позиції.

15. Визначити клас: рядок символів. Для збереження рядка використати масив, ознакою кінця рядка символів є символ ‘\0’. Створити конструктори і деструктор.

Визначити операції:

«*» логічне множення двох рядків (повертається рядок, в якому є тільки спільні символи);

«+» операцію зчеплення двох рядків;

«==», «!=», «<», «>», «<=» , «>=», операції порівняння двох рядків.

Визначити функції:

  • друку рядка;
  • копіювання рядка;
  • знищення N символів рядка, починаючи з позиції Poz;
  • вставка рядка St1 в рядок St2, починаючи з позиції Poz;
  • визначення довжини рядка;
  • виділення із рядка підрядок довжиною N символів починаючи з позиції Poz;
  • виявлення першого входження рядка в підрядок. Результат - номер позиції;
  • перевірки, чи є рядок записом цілого додатного числа;
  • перетворення рядка символів в ціле число, записом якого він є.

16. Визначити клас: круг на площині. Круг визначається трійкою чисел (х, у, r). Створити конструктори і деструктор.

Визначити операції:

«+» – площа об'єднання двох кругів;

«–» – площа різниці двох кругів;

«*» – площа перетину двох кругів.

Визначити функції:

  • друку інформації про коло;
  • порівняння площ;
  • знаходження площі круга;
  • довжини дуги для заданого в градусах центрального кута;
  • графічного зображення кола на екрані.

17. Визначити клас: прямокутник на площині. Прямокутник визначається координатами точки А(х1,у1) – верхня ліва точка, і точки В(х2,у2) – нижня права точка прямокутника (х1,у1,х2,у2єN). Створити конструктори і деструктор.

Визначити операції:

«+» – площа об'єднання двох прямокутників;

«–» – площа різниці двох прямокутників;

«*» – площа перетину двох прямокутників.

Визначити функції:

  • друку інформації про прямокутник;
  • порівняння прямокутників за площами;
  • порівняння прямокутників на співпадання при переносі;
  • знаходження площі і периметру прямокутника;
  • графічного зображення прямокутника на екрані.

18. Визначити клас: довге ціле число. Для збереження числа використати лінійний однонапрямний список. Створити конструктор i деструктор.

Визначити операції:

"+", "-", "*" додавання, віднімання, множення чисел;

"/" цілочислове ділення;

"%" залишок від ділення.

Визначити функції:

  • друку числа;
  • знаходження кількості цифр в числі;
  • нормалізації числа (відкидання незначущих нулів);
  • логічну функцію, яка визначає, чи дорівнює число нулю.

Визначити, чи є число 2100+1 простим.

19. Створити клас: правильний многокутник. Об’єкт визначається через 5 цілих чисел X1,Y1, R, N. Тут O(X1,Y1)- центр описаного кола, R – радіус описаного кола, N – кількість сторін, A(X1-R, Y1) –координати першої вершини. Створити конструктор і деструктор.

Визначити операцію:

“==” , “!=”– порівняння двох об’єктів;

“<<”– друку інформації про об’єкт.

Визначити функції:

· знаходження площі і периметра об’єкта;

· знаходження радіуса вписаного кола;

· знаходження кута при вершині;

· графічного зображення об’єкта на екрані;

· зсуву зображення на 20 пікселей вліво.

20. Визначити клас: площина у просторі. Площина задається загальним рівнянням А,В,С,D – коефіцієнти. Створити конструктор і деструктор, генератор копій.

Визначити операції:

«^» – кут між площинами;

«||» – відстань між площинами;

«==», «!=» – порівняння двох площин.

Визначити функції:

· друку інформації про площину;

· перевірки на належність точки до площини;

· визначення коефіцієнтів нормального рівняння площини;

· перевірки на паралельність площини координатним площинам;

· перевірки паралельності і перпендикулярності двох площин;

· знаходження відстані між точкою і площиною;

21. Визначити клас: ламана на площині. Ламана задається координатами точок, які зберігаються в двовимірному або одновимірному масиві. Створити конструктори і деструктор.

Визначити операції:

"+"- склеювання двох ламаних;

"<<", ">>"- виводу і вводу ламаної (кількість вершин та їх координати).

Визначити функції:

· визначення, чи ламана замкнута;

· визначення, чи є самоперетин ламаної;

· визначення, чи є замкнута ламана опуклою;

· знаходження площі фігури, обмеженою опуклою ламаною;

· графічного зображення ламаної.

Для спрощення алгоритму всі вершини, крім, можливо, першої, і останньої вважати різними.

22. Визначити клас: пряма на площині. Пряма задається загальним рівнянням, А,В,С – коефіцієнти. Створити конструктор і деструктор, генератор копій.

Визначити операції:

«^» – кут між прямими;

«||» – відстань між прямими;

«==», «!=» – порівняння двох прямих.

Визначити функції:

· друку інформації про пряму;

· знаходження перетину двох прямих;

· перевірки на належність точки до прямої;

· визначення коефіцієнтів нормального рівняння прямої;

· перевірки на паралельність прямої координатним осям;

· перевірки паралельності і перпендикулярності двох прямих;

· знаходження відстані між точкою і прямою.

23. Визначити клас: точка на площині. Створити конструктори і деструктор, генератор копій.

Визначити операції:

«++»,«--» – зсув точки вправо/вліво на 10 пікселів;

«||» – відстань між точками;

«<<», «>>» – вивід і ввід точок.

«==», «!=» – порівняння двох точок.

Визначити функції:

· знаходження полярних координат точки;

· графічного зображення точки на координатній площині;

· визначення, в якій чверті координатної площини лежить точка;

· визначення, чи утворюють 4 дані точки коло.

· визначення належності 3 даних точок одній прямій.

24. Визначити клас: ламана у просторі. Ламана задається координатами точок, які зберігаються в масиві розміром 3 х n. Створити конструктори і деструктор, генератор копій.

Визначити операції:

"+"- склеювання двох ламаних;

"="-присвоєння.

Визначити функції:

· друку інформації про ламану (кількість вершин та їх координати);

· визначення, чи ламана замкнута;

· визначення, чи належить вона одній площині;

· знаходження проекцій ламаної на координатні площини;

· графічного зображення проекції ламаної на XOY.

25. Визначити клас: точка у просторі. Створити конструктор, деструктор, генератор копій.

Визначити операції:

«==», «!=» – порівняння точок;

«||» – відстань між точками;

«=» – присвоєння;

«+», «-» – додавання, віднімання точок.

Створити функції:

· друку інформації про точку;

· знаходження сферичних координат;

· визначення належності точки координатним площинам.

· визначення рівняння прямої, що проходить через 2 задані точки;

· визначення рівняння площини, що проходить через 3 задані точки;

26.Визначити клас: ціле число. Створити конструктор і деструктор.

Визначити операції:

«++» - сума цифр числа;

«—» – знищення незначущих цифр числа;

«!» - обертання числа (цифри – в оберненому порядку);

«&» – ділення чисел (результат–дійсне число).

Створити функції:

· перевірки, чи є число простим;

· знаходження простих дільників числа;

· розклад числа на прості множники;

· знаходження найменшого спільного кратного двох чисел;

· друку числа в різних системах числення (від двійкової до десяткової).

27. Визначити клас: раціональне число x=p/q, де p є Z, q є N. Створити конструктор і деструктор.

Визначити операції:

"+", "-", "*", "/" додавання, віднімання, множення, ділення дробів;

"==","!=",">","<","<=",">=" порівняння;

«<<» – виводу та «>>» – вводу .

Визначити функції:

· піднесення до степеня: xa, a є Z;

· скорочення раціонального дробу;

· копії об’єкта.

28. Створити клас: куля у просторі. Куля задається координатами центру і радіусом. Створити конструктор, деструктор і генератор копій.

Визначити операції:

“==” – порівняння радіусів

“<<” – друк інформації про кулю;

“<=” – визначення належності однієї кулі іншій;

“>=” – визначення включення однієї кулі іншою;

“*” – знаходження об’єму перетину куль.

Визначити функції:

· зсуву кулі на заданий вектор;

· стискання кулі в задану кількість разів;

· друку інформації про перетин з іншою кулею (одна точка та її координати, безліч точок перетину).

29.Створити клас: вектор на площині. Створити конструктор і деструктор, генератор копій.

Визначити операції:

«+» – сума векторів;

«-» – різниця векторів;

«*» – скалярний добуток;

«=» – присвоєння;

«<» – кут між векторами.

Визначити функції:

· визначення, чи вектори колінеарні;

· визначення, чи вектори ортогональні;

· друку вектора;

· графічного зображення вектора;

· визначення довжини вектора.

30. Створити клас: вектор у просторі. Створити конструктор і деструктор, генератор копій.

Визначити операції:

«&» – кут між векторами;

«&&» – векторний добуток векторів;

«*» – скалярний добуток;

«=» – присвоєння;

«<<» – друку вектора.

Визначити функції:

· визначення, чи вектори колінеарні;

· визначення, чи вектори компланарні;

· визначення мішаного добутку векторів;

· графічного зображення проекцій вектора на кожну координатну площину;

· визначення довжини вектора.

31. Створити клас: еліпс. Еліпс задається коефіцієнтами a, b канонічного рівняння. Створити конструктори, деструктор.

Визначити операції:

“=” – присвоєння;

“==”- порівняння;

“<<” – друку інформації про еліпс;

“<=”, “>=” – включення одного еліпсу в інший та навпаки.

Визначити функції:

· визначення координат фокусів;

· визначення ексцентриситету;

· визначення фокального параметру;

· визначення рівнянь директрис;

· графічного зображення еліпсу.

32. Створити клас: циліндр, нижня основа якого паралельна координатній площині XOY. Циліндр задається координатами центру нижньої основи, радіусом основи і висотою. Створити конструктори, деструктор.

Визначити операції:

« = » - присвоєння;

«==» - порівняння циліндрів за об’ємами;

«<< » - друк інформації про циліндр;

«<= » - визначення належності одного циліндру іншому;

«>= » - визначення включення одним циліндром іншого.

Визначити функції:

· зсуву циліндру на заданий вектор;

· стискання розмірів циліндру в задану кількість разів;

· друку інформації про перетин з іншим циліндром (так, ні).

33. Створити клас: автомобіль. Автомобіль задається даними: номер. марка, ціна, колір, прізвище та ім’я власника, рік випуску, ознака проходження мита. Створити конструктори, деструктор.

Визначити операції:

« = » - присвоєння;

«<»,«>» - порівняння автомобілів за ціною;

«<=»,«>=» - порівняння автомобілів за роком випуску;

«<< » - друк інформації про автомобіль;

«+ » - сумарна ціна автомобілів.

Визначити функції:

· розмитнення авто в залежності від року випуску;

· зміна кольору та власника;

· визначення, чи розмитнений автомобіль;

· визначення, чи номер автомобіля є щасливим (симетричним);

· визначення, скільки років автомобілю.

34. Створити клас: таймер. Таймер задається проміжком часу, через якій буде викликана функція та часом початку та кінця роботи. Створити конструктори, деструктор.

Визначити операції:

« = » - присвоєння;

«==» - порівняння двох таймерів;

«<=»,«>=» - порівняння проміжків часу двох таймерів;

«<»,«>» - порівняння часу початку роботи двох таймерів;

«<< » - друк інформації про таймер;

«-» - визначення різниці в часі між двома таймерами.

Визначити функції:

· графічного зображення зміни часу у вигляді відрізка, довжина якого збільшується з часом (функція викликатися через заданий таймером проміжок часу);

· зміни проміжку часу;

· визначення кількості викликів таймером заданої функції;

· створення копії таймера;

· зміни часу початку роботи таймера.