
- •Загальні методичні вказівки
- •Лабораторна робота № 1 Представлення в пам’яті комп’ютера даних цілих та дійсних типів
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Знайти внутрішні представлення впк цілих та дійсних типів даних:
- •2.Індивідуальне завдання на лабораторну роботу
- •3.Алгоритм розв’язання задачі.
- •4.Система тестів
- •Лабораторна робота № 2 Перетворення типів даних
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Хід роботи Завдання 1
- •Завдання 2
- •4. Додаток
- •Лабораторна робота № 3 Структура даних стек
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Динаміка вмісту стеку(або масиву)
- •4. Алгоритм розв’язання задачі
- •5. Результати виконання програми
- •Лабораторна робота № 4 Структура даних черга
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Теоретичні відомості
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Динаміка вмісту черги(або деку)
- •4. Алгоритм розв’язання задачі
- •5. Результати виконання програми
- •Лабораторна робота № 5 Структура даних список
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Постановка задачі
- •3. Алгоритм розв’язання задачі.
- •4. Динаміка вмісту стеку.
- •Результати виконання програми
- •Лабораторна робота № 6 Методи сортування. Алгоритм вибірки
- •Індивідуальне завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Теоретичні відомості
- •Завдання:
- •Код програми
- •Лабораторна робота № 7 Методи сортування. Алгоритм бульбашки
- •Індивідуальне завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Теоретичні відомості
- •Завдання:
- •Перелік рекомендованих джерел
Лабораторна робота № 3 Структура даних стек
Мета роботи: Вивчення фундаментальної абстрактної структури даних - стека. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач.
Завдання:
Завдання 3.1:
Використати для розв’язання задач клас stack зі стандартної бібліотеки шаблонів STL .
1. Перетворити вираз з інфіксної форми запису в префіксну форму.
2. Перетворити вираз з інфіксної форми запису без дужок в постфіксну форму.
3. Перетворити вираз з інфіксної форми запису з необхідними дужками в постфіксну форму.
4. Обчислити вираз, представлений в інфіксній формі запису.
5. Обчислити вираз, представлений в постфіксній формі запису.
6. Перевірити баланс дужок в арифметичному виразі, який містить тільки один тип дужок – круглі.
7. Написати програму синтаксичного аналізу відповідностей відкриваючих і закриваючих дужок в арифметичному виразі, що має три набори дужок "(" i ")", "<" i ">", "[" i "]". Роздрукувати таблицю відповідностей дужок, причому в таблиці повинно бути зазначено, для яких дужок відсутні парні їм дужки. Для ідентифікації дужок використати їх порядкові номери у виразі.
Приклад: Для арифметичного виразу:
1 2 3 4 5 6
(a+b1)/2+6.5]*{4.8+sin(x)
має бути виведена таблиця виду:
Дужки:
відкриваюча закриваюча
1 2
- 3
5 6
4 -
Прочерки в таблиці означають відсутність відповідної дужки.
8. Написати програму, що визначає, чи має символьний рядок, що вводиться, правильну форму виду a D b D c D ... D z , де кожний рядок a, b, c, ..., z має форму рядка виду x C y, де x - рядок, що складається з літер A і B, а y - рядок, обернений до рядка x (наприклад, якщо x = ABABBA, то y повинен дорiвнювати ABBABA). Отже, рядок має правильну форму, якщо він складається з будь-якої кiлькостi подiбних рядків, що роздiленi символом "D". Визначити чи введений рядок правильний.
9. Мажоруючим елементом в послідовності A[1..N] називається елемент, що зустрічається в послідовності більш N/2 разів. В послідовності може бути не більше одного мажоруючого елемента. Визначити, чи є в послідовності мажоруючий елемент, і якщо є, то який.
Приклад: Послідовність 3, 3, 4, 2, 4, 4, 2, 4, 4 має мажоруючий елемент 4, тоді як в послідовності 3, 3, 4, 2, 4, 4, 2, 4 мажоруючого елемента немає.
Вказівки до розв’язання задачі: Створіть стек і додавайте або вилучайте зі стеку елементи за таким правилом:
на першому кроці покладіть в стек A[1];
на i-ом кроці (i=2, ..., N) повторіть такі дії:
якщо стек порожній, то покладіть в нього A[і]; інакше, якщо елемент A[і] співпадає з елементом, що знаходиться у вершині стеку, то додайте A[і] у стек; інакше вилучіть елемент з вершини стеку.
Якщо стек не порожній, то в ньому залишаться лише співпадаючі елементи. Якщо в послідовності є мажоруючий елемент, те він і залишиться в стеку після N-го кроку. Для перевірки (у випадку не порожнього стеку після виконання N-го кроку) чи є елемент у стеку мажоруючим (якщо в стеку більше одного елемента, то вони всі однакові), перегляньте послідовність ще раз і підрахуйте, скільки раз зустрічається в ній елемент, що залишився в стеку. Якщо це число більше N/2, то цей елемент є мажоруючим, інакше - мажоруючого елемента в послідовності немає.
10. Задано n однакових на вигляд каменів, деякі з яких насправді різні по вазі. Є прилад, що дозволяє по двох каменях визначити, однакові вони чи різні (але не показує, який тяжчий). Відомо, що серед цих каменів більшість (більше n/2) однакових. Зробивши не більше n зважувань, знайти хоча б один камінь з цієї більшості.
Вказівки до розв’язання задачі: Дивіться вказівки до попередньої задачі.
Завдання 3.2:
Побудувати динамічну структуру даних стек на базі статичного масиву.
1. Реалізуйте за допомогою одного масиву з N елементiв два послідовних стеки. Стеки повинні рости з кінців масиву назустріч один одному. На вході задаються пари цiлих чисел (i,j), де i=(1;2), j – любе. Перше число (і) вказує на номер стеку (1 або 2), з яким буде виконуватись робота. Якщо друге число j>0, то воно додається в і – тий стек, якщо j<0, то з і - го стеку вилучається один елемент, j=0 – ігнорується. Перепишіть основні операції роботи зі стеками і продемонструйте динаміку стеків.
2. Реалізуйте стек, у якому замість двох функцій top i pop використовується тільки одна функція pop, яка робить ці дві дії одночасно, тобто і вилучає елемент зі стеку, і повертає його значення
3. Задайте послідовність, що складається з цифр 0 і 1 . Кожна цифра 1 додається в класичний стек, а кожна цифра 0 вилучає зі стека один елемент.
4. Напишіть програму, яка будує класичний стек (числа вводяться з клавіатури) і після цього перевіряє, чи елементи стека будуть відсортовані по спаданню або по зростанню.
5. Напишіть програму для реалізації стека, який мiстить цiлi числа, за допомогою масиву data, в якому data[0] (а не окрема змiнна) використовуєтся для зберiгання вершини стека, а решта елементів масиву можуть містити елементи самого стека.
6. Напишіть програму, яка будує класичний стек (числа вводяться з клавіатури) і після цього перевіряє, чи цей стек буде “дзеркальним”.
7. Напишіть програму для послiдовного зберiгання двох стекiв в масивi з N елементiв (стеки розміщуються один за одним: перша половина масиву – перший стек, друга половина масиву – другий стек). На вході задаються пари цiлих чисел (i,j), 1 i 2. Число j пари (i,j) з j>0 додається в i -ий стек; число j пари (i,j), з j<=0, не використовується, але зі стека вилучається один елемент.
8. Реалізуйте стек із “проштовхуванням”: вершина стека завжди знаходиться в першій комірці масиву; при “заштовхуванні” в стек наступного елемента, він поміщається у вершину стеку, а всі решта елементів просуваються на одну позицію далі; при вилученні зі стека одного елемента всі решта елементів пересуваються назад.
9. Реалізуйте стек, у якому до опису стека додано ще дві змінні EMPTY i FULL, замість функції empty. За допомогою цих змінних в функціях push i pop виконати перевірку можливості додавання нового елемента до стека або вилучення елемента з вершини стека.
10. Реалізуйте стек, у якому вершина стека вказує на останній елемент стека, а не на перший вільний елемент масиву.