Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб роб Інф 4 семестр_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
49.25 Кб
Скачать

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

Тема: Шаблони функцій. Шаблони класів. Спеціалізації шаблонів.

Контрольні запитання:

  1. Поняття шаблону функції. Правила визначення.

  2. Типовані та нетиповані параметри шаблонів.

  3. Конкретизація шаблону функції . Явна та неявна.

  4. Спеціалізація наборну функції . Мета. Визначення.

  5. Поняття шаблону класу. Визначення. Конкретизація.

  6. Спеціалізація шаблону класу. Повна та часткові спеціалізації.

  7. Знайдіть помилки:

А) template <class T>

T square(T number)

{return T * T;}

Б) template <class T>

int square(int number)

{return number * number;}

В) template <class T1, class T2>

T1 sum(T1 x, T1 y)

{return x + y;}

Завдання 1. Визначити узагальнені функції для

  1. Виводу елементів масиву на екран

  2. Розв’язування задачі згідно варіанту.

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

Варіанти:

  1. Впорядкування масиву методом бульбашки(камінця чи ін.).

  2. Лінійний пошук елемента у масиві. Функція має повертати індекс знайденого елемента, або – 1 у інакшому випадку.

  3. Обчислення кількості входжень заданого елемента масиву.

  4. Перестановка елементів масиву.

  5. Зміна кожного елемента масиву за певним правилом(формулою). Формула зміни – додатковий параметр(вказівник на функцію).

  6. Бінарний пошук елемента у впорядкованому масиві. Функція має повертати індекс знайденого елемента, або – 1 у інакшому випадку.

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

  8. Копіювання елементів, що задовольняють певній умові у інший масив. Умова задається як додатковий параметр(вказівник на логічну функцію одного параметра).

  9. Видалення із масиву усіх елементів, що рівні заданому значенню.

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

  11. Видалення повторних входжень елементів у впорядкованому масиві. Наприклад, після обробки масиву 1,1,1,2,2,2,3,3,4 маємо отримати масив 1,2,3,4.

  12. Злиття двох масивів у третій: спочатку елементи першого масиву, потім другого.

  13. Копіювання одного масиву у другий в оберненому порядку.

  14. Перерозподіл елементів масиву відносно заданого елемента. Спочатку у масиві розміщуються елементи, менші заданого у порядку їх зустрічі, потім елементи більші рівні заданого.

  15. Обертання масиву.

Завдання 2. Визначити спеціалізацію шаблону функції 1 завдання для типу char*.

Завдання 3. Визначити шаблон класу, використовуючи поле масив чи динамічний масив. Перевірити роботу шаблону класу для типів int, double та деякого простого класу(Персона. Студент, Книга чи ін.).

Варіанти:

  1. Вектор. Операції [], =. Методи: перевірка чи вектор пустий, добавлення елемента у кінець вектора, видалення елемента з кінця вектора, видалення елемента за вказаним номером.

  2. Стек. Максимальний розмір стеку фіксується(нетипований параметр шаблону). Методи: перевірка чи вектор пустий, добавлення елемента на початок вектора, вилучення елемента на початку вектора, подивитися що на вершині стеку, очистка стеку.

  3. Масив. Розмір масиву фіксується(нетипований параметр шаблону). Операції []. Методи: пошук у масиві числа, вивід масиву, впорядкування масиву за зростанням(спаданням) значень.

  4. Черга. Максимальний розмір черги фіксується(нетипований параметр шаблону). Методи: перевірка чи черга пуста, чи повна, добавлення елемента у кінець черги, вилучення елемента на початку черги, подивитися що на початку черги, подивитися що у кінці черги, очистка черги.

  5. Вектор. Операції [], =. Методи: перевірка чи вектор пустий, добавлення елемента у кінець вектора, вставка елемента у певну позицію, очистка вектора.

  6. Черга з пріоритетами. Розмір черги фіксується(нетипований параметр шаблону). Методи: перевірка чи черга пуста, чи повна, добавлення елемента у кінець черги, вилучення елемента згідно його пріоритету, подивитися що на початку черги, подивитися що у кінці черги, очистка черги, кількість елементів черги.

  7. Множина. Множина не повинна містити повторів(всі значення унікальні). Методи: додавання елемента у множину, перевірка входження елемента у множину, вивід елементів множини у впорядкованому вигляді.

  8. Стек(динамічний масив). Методи: перевірка чи вектор пустий, добавлення елемента на початок вектора, вилучення елемента на початку вектора, подивитися що на вершині стеку, очистка стеку, число елементів стеку.

  9. Множина. Допускаються повтори елементів у множині. Методи: додавання елемента у множину, перевірка входження елемента у множину, вивід елементів множини у впорядкованому вигляді, кількість елементів множини.

  10. Двостороння черга. Методи: перевірка чи черга пуста, добавлення елемента на початок та у кінець черги, вилучення елемента як на початку так і у кінці черги, подивитися що на початку черги, подивитися що у кінці черги, очистка черги.

  11. Множина. Множина не повинна містити повторів(всі значення унікальні). Методи: додавання елемента у множину, вивід елементів множини у впорядкованому вигляді, операція + (об’єднання множин).

  12. Масив. Розмір масиву фіксується(нетипований параметр шаблону). Операції [], ==, !=. Методи: обмін значеннями між даним масивом та іншим масивом, трансформація масиву за певною формулою.

  13. Черга з пріоритетами. Методи: перевірка чи черга пуста, добавлення елемента згідно пріоритету(більше число - вищий пріоритет, вилучення елемента на початку черги, подивитися що на початку черги, подивитися що у кінці черги, очистка черги, кількість елементів черги.

  14. Вектор. Операції [], =, +. Методи: перевірка чи вектор пустий, добавлення елемента у кінець вектора, видалення елемента з кінця вектора, видалення елементів, розміщених у вказаному діапазоні індексів.

  15. Множина. Множина не повинна містити повторів(всі значення унікальні). Методи: додавання елемента у множину, вивід елементів множини у впорядкованому вигляді, видалення елементі з множини, число елементів у множині..

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

Тема: Шаблони класів.

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

Тема: Шаблони класів. Друзі шаблонів.

Лабораторна робота 9

Тема: Потоки. Стандартні потоки. Стан потоку. Помилки потоку.

Лабораторна робота 10-

Тема: Файловий ввід та вивід з використанням потоків.

Лабораторна робота 11

Тема: Виключні ситуації. Реалізація механізму виключних ситуацій.

Лабораторна робота 12-

Тема: . Стандартна бібліотека шаблонів (STL).