- •Методичні вказівки
- •Практична робота №1 Шаблонні функції Мета роботи
- •Основні теоретичні відомості
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Контрольні запитання
- •Література
- •Додаток а Титульний аркуш
Завдання на практичну роботу
1. Використовуючи рекомендовану літературу та дані методичні вказівки, вивчити основні принципи роботи з шаблонними динамічними структурами.
2. Створити шаблонні динамічні структури згідно варіанту (усі розроблені функції зробити також шаблонними).
3. Оформити звіт (назва і мета роботи, індивідуальне завдання, текст програми, результати роботи програми, висновки).
4. Відповісти на контрольні запитання.
Завдання 1. Інформація про заводи зведена у наступний документ:
Найменування |
Площа |
Об’єм продажу |
Коментарі |
|
Плановий |
Фактичний |
|||
Завдання 2. Інформація про книжки зведена у документ.
Найменування |
Автор |
Кількість сторінок у книгах |
Рік видання |
Місце видання |
Завдання 3. Інформація про студентів зведена в таблицю.
ПІБ |
Група |
Номер залікової книжки |
Рік народження |
Телефон |
Завдання 4. Інформація про диски зведена у документ з наступною структурою.
Номер диска |
Назва |
Кількість виконавців |
Всі виконавці |
Рік видання |
Варіант 1. Зберігати дані з завдання 1 у однозв’язному списку. Написати функцію, що виконує сортування по найменуванню.
Варіант 2. Зберігати дані з завдання 1 у двозв’язаному списку. Написати функцію, що розраховує загальну площу, що займають підприємства.
Варіант 3. Зберігати дані з завдання 1 у однозв’язному списку. Написати функцію, що виводить заводи, що не виконали план.
Варіант 4. Зберігати дані з завдання 1 у двозв’язаному списку. Написати функцію, що виконує пошук по найменуванню.
Варіант 5. Зберігати дані з завдання 1 у однозв’язному списку. Написати функцію, що виводить заводи з площею, що перевищує 100 га.
Варіант 6. Зберігати дані з завдання 2 у двозв’язаному списку. Написати функцію, що виконує пошук книг за автором.
Варіант 7. Зберігати дані з завдання 2 у однозв’язному списку. Написати функцію, що виконує сортування по найменуванню.
Варіант 8. Зберігати дані з завдання 2 у двозв’язаному списку. Написати функцію, що виконує пошук по місцю видання.
Варіант 9. Зберігати дані з завдання 2 у однозв’язному списку. Написати функцію, що виводить книжки у яких кількість сторінок більше 300.
Варіант 10. Зберігати дані з завдання 2 у двозв’язаному списку. Написати функцію, що виконує сортування методом вставки по року видання.
Варіант 11. Для варіанта 3 написати функцію, що виконує сортуваня по ПІБ.
Варіант 12. Зберігати дані з завдання 3 у однозв’язному списку. Написати функцію, що виконує пошук по групі.
Варіант 13. Зберігати дані з завдання 3 у двозв’язаному списку. Написати функцію, що виконує відсортуваня за номером залікової книжки.
Варіант 14. Зберігати дані з завдання 3 у однозв’язному списку. Написати функцію, що виводить студентів, які народилися пізніше 1986 року.
Варіант 15. Зберігати дані з завдання 3 у двозв’язаному списку. Написати функцію, що виконує пошук по ПІБ.
Варіант 16. Зберігати дані з завдання 4 у двозв’язаному списку. Написати функцію, що виконує сортування за кількістю виконавців.
Варіант 17. Зберігати дані з завдання 4 у двозв’язаному списку. Написати функцію, що виводить всі диски заданого виконавця.
Варіант 18. Зберігати дані з завдання 4 у двозв’язаному списку. Написати функцію, що сортирує данні методом Шелла за роком видання.
Варіант 19. Зберігати дані з завдання 4 у двозв’язаному списку. Написати функцію, що сортирує методом бульбашки за назвою.
Варіант 20. Зберігати дані з завдання 4 у двозв’язаному списку. Написати функцію, що сортирує за номером диска.
Контрольні запитання
Що таке шаблонна динамічна структура?
Коли використовується об’єднання?
Які операції дозволяють працювати з динамічною пам’яттю.
Які оператори використовуються для доступу до елементів структури та об’єднання.
Наведіть структуру однозв’язного списку.
Наведіть структуру двозв’язного списку.
Практична робота №3 Шаблонні класи
Мета роботи
Навчитись використовувати шаблонні класи при розробці програм.
Основні теоретичні відомості
Відповідно до функцій класи можуть бути параметризовані одним чи декількома типами.
Об’ява шаблону класу виконується аналогічно об’яві шаблону функції:
template<class T>
class DynArr {
long size; //розмірність масиву
long count; //лічильник елементів
T* p; //покажчик на початок масиву
public:
DynArr(long s);
DynArr (const DynArr & arr);
~ DynArr ();
void add(T x);
};
або
template <typename T> class DynArr
//тіло класу
Для того щоб визначити функцію-член шаблону класу, необхідно вказати що це шаблон функції, при цьому необхідно використати повне ім’я типу шаблону класу:
template<class T> void DynArr<T>::add(T x) {
if(count >= size) {
DynArr temp(*this);
if(p) delete[] p;
size += 10;
p = new T[size];
for(int i = 0; i<temp.count; ++i)
p[i] = temp.p[i];
}
p[count++] = x;
}
При об’яві об’єкту шаблонного класу в програмі необхідно явно вказати, який контейнер повинен використовуватись для зберігання елементів.
DynArr<int> iArr(15);
DynArr<float> fArr(20);
В якості параметрів шаблонів класів або функцій можуть виступати не тільки типи, але й звичайні величини.
template <class T, int col> class DynArr
{……….};
Тоді об’ява зміної буде мати наступний вигляд
DynArr <int,100> arr1;
Але при використанні аргументів для параметрів шаблонів, що не є типами, не можливо використовувати дійсні числа, об’єкти типа клас і об’єкти з внутрішнім зв’язуванням.
