ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.08.2020

Просмотров: 1002

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

" + " - конкатенація (з’єднання) рядків,

" - " - вилучення підрядку,

" < " - відношення "менше",

" <= " - відношення "менше чи дорівнює",

" > " - відношення "більше",

" >= " - відношення "більше чи дорівнює",

" == " - відношення "дорівнює",

" != " - відношення "не дорівнює".

За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку.

Крім того перевантажити операції введення із файлу і виведення у файл з символами " << " , " >> " таким чином:

f << A або A >> f - виведення (запис) значення A типу "рядок" у файл f,

f >> A або A << f - введення (читання) значення A із файлу f, де f - покажчик на файл.

Передбачити обробку виключної ситуації - перевищення кількості символів рядка максимальної припустимої величини - 254.

Варіант 4

Створити клас для роботи з множинами. Максимальна кількість елементів множини - 65534. Здійснити перевантаження символів операцій:

" + " - об’єднання множин,

" - " - віднімання множин,

" * " - переріз множин,

" <= " - відношення включення (перевіряється, чи є множина, що надана лівим операндом, підмножиною множини, що надана правим операндом),

" >= " - відношення включення (перевіряється, чи є множина, що надана правим операндом, підмножиною множини, що надана лівим операндом),

" == " - еквівалентність множин,

" != " - нееквівалентність множин,

Крім того перевантажити операції введення із файлу і виведення у файл з символами " << " , " >> " таким чином:

f << A або A >> f - виведення (запис) значення A типу "множина" у файл f,

f >> A або A << f - введення (читання) значення A із файлу f, де f - покажчик на файл.

Варіант 5

Написати програму, яка здійснює побайтне копіювання інформації з одного файлу в інший. Імена файлів вказуються у командній стрічці. Якщо ім’я файлу-приймача не вказано, програма повинна виводити інформацію із файлу-джерела на екран. Для виконання операцій обміну застосувати потокові операції.

Варіант 6

Створити класи bifstream i bofstream для виконання файлових операцій читання і запису значень дійсного типу у бінарному режимі. Застосувати потокові операції введення/виведення. Тип значень обрати самостійно з наступних: float, double, extended.

Варіант 7

Перевантажити символ операції “>>” таким чином, щоб можна було робити копіювання файлу за допомогою такого оператору:

fa >> fb ;

де fa, fb – потоки, що пов’язані з файлами.

Операція “>>” повинна повертати значення потоку fa так, щоб можна було робити множинне копіювання:

fa >> fb >> fc;

Варіант 8

Написати функцію, яка повертає значення дескриптору файла, пов’язаного з потоком. Функцію треба створити так, щоб вона працювала для потоків ifstream, ofstream, fstream. Створити файли, відкрити їх для читання, запису і введення/виведення за допомогою вказаних вище потоків і отримати їх дескриптори.

Варіант 9

Створити макрос-функцію, яка повертає значення дескриптору файла, пов’язаного з наданим потоком. Створити файли, відкрити їх для читання, запису і введення/виведення за допомогою потоків ifstream, ofstream, fstream і отримати їх дескриптори.


Лабораторна робота 6

Тема: функції та класи з шаблонами

Варіант 1

Створити функцію сортування (впорядковування) одновимірного масиву з елементами довільного типу. Передбачити параметр функції, який дає змогу виконувати впорядковування елементів масиву: а) по збільшенню значень елементів; б) по зменшенню.

Варіант 2

Написати функцію, яка створює копію іншого двовимірного динамічного масиву довільного типу.

Варіант 3

Створити функцію, яка знаходить найбільший і найменший елементи одновимірного масиву довільного типу.

Варіант 4

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

Варіант 5

Створити динамічний клас з шаблонами для роботи з однови-мірними масивами. Передбачити можливість застосування створеного класу для випадків, коли елементи масиву мають будь-який числовий тип. Здійснити перевантаження операцій:

" = " - динамічне присвоєння,

" + " - поелементне додавання,

" - " - поелементне віднімання,

" * " - скалярне множення масивів,

" << " - циклічне переставлення елементів масиву уліво,

" >> " - циклічне переставлення елементів масиву управо,

" [ ] " - доступ до елементу по індексу з контролем.

Варіант 6

Створити динамічний клас з шаблонами для роботи з послідов-

ностями абстрактних символів із деякого алфавіту. Передбачити шаблони для таких випадків: символ є ціле число, символ є символом ASCII, символ є рядок символів ASCII, символ є вектор на площині. Максимальну довжину послідовності і код завершення послідовності вибрати самостійно. Перевантажити операції:

" = " - динамічне присвоєння,

" + " - конкатенація (з’єднання) рядків,

" - " - вилучення підрядку,

" <= " - відношення "менше чи дорівнює",

" >= " - відношення "більше чи дорівнює",

" == " - відношення "дорівнює",

" != " - відношення "не дорівнює".

За відношення порядку ("менше", "більше", "менше чи дорівнює", "більше чи дорівнює") вважати відношення лексикографічного порядку. Крім того, перевантажити операції введення значення вказаного класу із файлу і виведення у файл з символами " << ", " >> ".

Варіант 7

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

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

" + " - об’єднання множин,

" - " - віднімання множин,

" * " - переріз множин,

" <= " - відношення включення (перевіряється, чи є множина, що надана лівим операндом, підмножиною множини, що надана правим операндом),

" == " - еквівалентність множин,

" != " - нееквівалентність множин,

" << " - належність (перевіряється, чи належить значення, що надане лівим операндом, до множини, що надана правим операндом).


Варіант 8

Створити клас List для роботи із структурою типу "однозв’язний список". Тип елемента списку - довільний, застосувати шаблони. Передбачити функції для виконання таких операцій:

putinbeg - створити новий елемент списку у його початку;

getoutbeg - добути і вилучити перший елемент списку;

putinend - створити новий елемент списку у його кінці;

getoutend - добути і вилучити останній елемент списку;

print - вивести список на екран;

Приклад побудови зв’язного списка з шаблоном див., наприклад, у [ Майкл Хаймен И., Арнсон Боб. Borland C++ 5 для "чайников".- К.: Диалектика, 1997.- 320 с.]

Варіант 9

Створити клас Astack - стек, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб стек мав можливість вміщувати значення довільного типу, застосувати шаблони. Передбачити функції для виконання таких операцій:

push - занести у стек значення типу Тype;

pop - добути і вилучити значення із вершини стека;

print - вивести усі значення стека на екран;

num - повернути кількість значень, що знаходяться у стеку.

Варіант 10

Створити клас Aqueue - структура типу черга, що базується на масиві покажчиків фіксованого розміру. Передбачити, щоб черга мала можливість вміщувати значення довільного типу, застосувати шаблони.
Передбачити функції - члени класу для виконання таких операцій:

add - занести у чергу надане значення;

pop - добути і вилучити значення із черги;

print - вивести усі значення із черги на екран;

num - повернути кількість значень, що знаходяться у черзі;

isempty - повернути значення true (тип bool), якщо черга пуста.

Варіант 11

Створити клас Lstack - стек, що базується на структурі зв’язного списку. Передбачити, щоб стек мав можливість вміщувати значення довільного типу, застосувати шаблони. Передбачити функції - члени класу для виконання таких операцій:

push - занести у стек надане значення;

pop - добути і вилучити значення із вершини стека;

print - вивести усі значення стека на екран;

num - повернути кількість значень, що знаходяться у стеку;

isempty - повернути значення true (тип bool), якщо черга пуста.

Вказівки.

Передбачити обробку виключної ситуації: добування значення із порожнього стека.

Варіант 12

Створити клас Lqueue - структура типу "черга", що базується на структурі зв’язного списку. Вважати, що тип значення, що зберігаються у черзі, може бути довільним, застосувати шаблони.
Передбачити функції для виконання таких операцій:

add - занести у кінець черги значення типу Тype;

pop - добути і вилучити значення із початку черги;

print - вивести усі значення, що знаходяться у черзі, на екран;

num - кількість значень, що знаходяться у черзі;

isempty - повернути значення true (тип bool), якщо черга пуста.

Вказівки.

Передбачити обробку виключної ситуації: добування значення із порожньої черги.

Лабораторна робота 7


Тема: успадкування, атрибути доступу та віртуальні функції

Варіант 1

Створити абстрактний клас для роботи з геометричними фігурами на екрані. Передбачити такі компоненти-властивості класу:

- координати центра фігури;

- кут повороту (у градусах);

- масштабний фактор;

і такі функції-методи:

- показати фігуру на екрані;

- зробити фігуру невидною (знищити її зображення);

- повернути фігуру на заданий кут (кут надається у градусах);

- пересунути фігуру на наданий вектор.

Застосовуючи успадкування і наведений вище абстрактний клас створити похідний клас для роботи з фігурою типу "трикутник". Визначити інтерфейсну частину у класах, застосувати атрибути доступу.

Варіант 2

Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу "чотирикутник".

Варіант 3

Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу
"правильний n-кутник".

Варіант 4

Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу
"еліпс".

Варіант 5

Наданий такий клас:

class Base
{
public:

virtual void myname() { cout << "This is class Base" << endl; }
};

а. Від цього класу треба створити два похідних класу: DerA і DerB.

б. Від класів DerA і DerB шляхом множинного успадкування створити клас DerAB.

в. Переозначити у кожному з створених класів функцію myname таким чином, щоб вона виводила на екран дійсне ім’я класу об’єкту, для якого вона викликається.

г. Для кожного з класів створеної ієрархії створити по одному об’єкту і для кожного з них викличте функцію myname.

д. Створіть масив із 4 покажчиків на базовий клас ієрархії. Для кожного з них створіть динамічний об’єкт, по одному для кожного з класів ієрархії. Запишіть виклик функції myname для кожного з динамічних об’єктів за допомогою покажчиків.

є. Поясніть дію функції mymain у всіх випадках.

Варіант 6

У файлах 7_05_a.cpp, 7_05_b.cpp, 7_05_c.cpp (див. Додаток Б) розміщені приклади програм, які ілюструють застосування класів для створення ефектів анімації. Розібратися як ці програми діють, виконати їх компіляцію, подивитися, як вони працюють.

Лабораторна робота 8

Тема: обробка надзвичайних ситуацій

Всі класи, що були створені при виконанні попередніх завдань, доробити, передбачивши обробку надзвичайних ситуацій. Надзвичайною ситуацією вважати:

- некоректні значенні операндів при виконанні операцій;

- некоректні значенні параметрів при викликах функцій - членів класів;

- не успішне виконання операції виділення оперативної пам’яті при створенні динамічного об’єкту;

- не успішне завершення операції відкриття файлу;

- інші випадки на розсуд студента.

Для обробки надзвичайної ситуації застосувати:

а) спеціально побудовані функції типу errhalt із модулю syst.h ;

б) макрозасіб типу assert ;

в) засоби throw, try, catch .


4 довідкова інформація

Нехай у плоскій системі координат маємо точку з координатами x,y. Координати цієї точки після повороту її на кут відносно початку системи координат проти часової стрілки можна обчислити за такими формулами:

Тут x', y' - координати точки після повороту.

5 ЛІТЕРАТУРА

1. Скляров В.А.

Язык С++ и объектно-ориентированное программирование .-

Мн.: Выш. шк., 1997.- 478 с.

2. Фридман А.Л.

Объектно-ориентированное программирование на языке С++.-

М.: Горячая линия - Телеком, 2001.- 232 с.

3. Савитч Уолтер

Язык С++. Курс объектно-ориентированного программирования.-

М.: "Вильямс", 2001.- 704 с.

4. Пол Ирэ.

Объектно-ориентированное программирование с использованием
С++.- К.: НИПФ "ДиаСофт Лтд", 1995.- 480 с.

5. Уильям Топп, Уильям Форд

Структуры данных в С++ .-

М.: БИНОМ, 1999.- 816 с.

6. Леен Аммерааль

STL для программистов на С++ .-

М.: ДМК, 1999.- 240 с.

7. Подбельский В.В.

Язык С++ : Уч. пос. - М.: Финансы и статистика, 1995.- 560 с.

Додаток А

Таблиця варіантів завдань

Ном.

по

спис.

Номер лабораторної роботи

1

2

3

4

5

6

7

8

1

6

7

8

1

2

3

4

1

2

7

8

9

2

3

4

5

1

3

8

1

10

3

4

5

6

1

4

9

2

11

4

5

6

1

1

5

10

3

1

5

6

7

2

1

6

11

4

2

6

7

8

3

1

7

1

5

3

1

8

9

4

1

8

2

6

4

2

9

10

5

1

9

3

7

5

3

1

11

6

1

10

4

8

6

4

2

12

1

1

11

5

1

7

5

3

1

2

1

12

6

2

8

6

4

2

3

1

13

7

3

9

1

5

3

4

1

14

8

4

10

2

6

4

5

1

15

9

5

11

3

7

5

6

1

16

10

6

1

4

8

6

1

1

17

11

7

2

5

9

7

2

1

18

1

8

3

6

1

8

3

1

19

2

1

4

1

2

9

4

1

20

3

2

5

2

3

10

5

1

21

4

3

6

3

4

11

6

1

22

5

4

7

4

5

12

1

1

23

6

5

8

5

6

1

2

1

24

7

6

9

6

7

2

3

1

25

8

7

10

1

8

3

4

1

26

9

8

11

2

9

4

5

1

27

10

1

1

3

1

5

6

1

28

11

2

2

4

2

6

1

1

29

1

3

3

5

3

7

2

1

30

2

4

4

6

4

8

3

1

Додаток Б

Зразок титульної сторінки лабораторної роботи