
- •Міністерство освіти і науки України національний університет “Львівська політехніка”
- •До курсової роботи (частина 2)
- •"Динамічні структури даних" з дисципліни
- •6.050102 “Комп’ютерна інженерія”
- •2.2. Вимоги до оформлення звіту
- •3. Варіанти завдань
- •3.1. Завдання 3. Побудова атд
- •3.2. Завдання 4. Застосування атд
- •3.2.1. Застосування атд "стек" до розв’язання прикладних задач
- •3.2.2. Застосування атд " черга " до розв’язання прикладних задач
- •3.2.3. Застосування атд " список " до розв’язання прикладних задач
- •3.2.4. Застосування атд " дерево " до розв’язання прикладних задач
- •3.3. Вибір варіанту індивідуального завдання
- •Список літератури
- •1. Мета роботи……………………………………..……………………………………………3
- •2.1. Вимоги до оформлення програмного продукта………………………………….…3
- •Методичні вказівки
- •6.050102 “Комп’ютерна інженерія
3. Варіанти завдань
3.1. Завдання 3. Побудова атд
Змоделювати абстрактний тип даних (АТД) , який використати в Завданні 4. Оформити АТД у вигляді класа. Переписати основні операції роботи з АТД і продемонструвати їх застосування при додаванні та вилученні елементів з АТД.
3.2. Завдання 4. Застосування атд
3.2.1. Застосування атд "стек" до розв’язання прикладних задач
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 = AАBABB, то y повинен дорiвнювати BBABАA). Отже, рядок має правильну форму, якщо він складається з будь-якої к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 зважувань, знайти хоча б один камінець з цієї більшості.
Вказівки до розв’язання задачі: Дивіться вказівки до попередньої задачі.