Методичні вказівки до рішення задач на динамічні змінні Паскаль
« НазадЗадачі на динамічні змінні ПаскальЛабораторна робота 11. СтекВсі числа, що згадують у завданнях даної групи, є цілими. Всі покажчики мають тип PNode і вказують на записи типу TNode. Типи PNode й TNode описані у такий спосіб: type PNode=^TNode; TNode=record Data: integer; Next: PNode; end; Так як змінні типу «покажчик» призначені для зберігання адрес, у формулюваннях завдань слова «покажчик» (на елемент даних) і «адреса» (елемента даних) використаються як синоніми. Для позначення нульового покажчика у формулюваннях завдань використається ім'я nil. У завданнях 3-13 структура «стек» (stack) моделюється ланцюжком зв'язаних вузлів-записів типу TNode (див. завдання 2). Поле Next останнього елемента ланцюжка дорівнює nil. Вершиною стека (top) вважається перший елемент ланцюжка. Для доступу до стеку використовується покажчик на його вершину (для порожнього стека даний покажчик покладається рівним nil). Значенням елемента стека вважається значення його поля Data. Дано число D і покажчик Р1 на вершину непустого стека. Додати елемент зі значенням D у стек і вивести адресу Р2 нові вершини стека. 2.ЧергаВсі числа, що згадують у завданнях даної групи, є цілими. Всі покажчики мають тип PNode і вказують на записи типу TNode. Типи PNode й TNode описані у такий спосіб: type PNode=^TNode; TNode=record Data: integer; Next: PNode; end; Так як змінні типу «покажчик» призначені для зберігання адрес, у формулюваннях завдань слова «покажчик» (на елемент даних) і «адреса» (елемента даних) використаються як синоніми. Для позначення нульового покажчика у формулюваннях завдань використається ім'я nil. У завданнях 3-28 структура «черга» (queue) моделюється ланцюжком зв'язаних вузлів-записів типу TNode (див. завдання 2). Поле Next останнього елемента ланцюжка дорівнює nil. Початком черги («головою», head) вважається перший елемент ланцюжка, кінцем («хвостом», tail) — її останній елемент. Для можливості швидкого додавання в кінець черги нового елемента зручно зберігати, крім покажчика на початок черги, також і покажчик на її кінець. У випадку порожньої черги покажчики на її початок і кінець покладаються рівними nil. Як і для стека, значенням елемента черги вважається значення його поля Data. Дано набір з 10 чисел. Створити чергу, що містить дані числа в зазначеному порядку (перше число буде розміщатися на початку черги, останнє — наприкінці), і вивести покажчики Р1 й Р2 на початок і кінець черги. 3. Лінійний однозв’язний списокСписок внутрішніх телефонів організації з розбивкою по відділах. Кількості відділів і телефонів усередині відділу задати самостійно. Скласти модуль пошуку всіх телефонів із заданими двома першими цифрами.
Лабораторна робота 21. Лінійний двозв’язний списокУ завданнях 3-15 структура «двозвязний список» (doubly linked list) моделюється ланцюжком вузлів- записів типу TNode, зв'язаних як з попереднім, так і з наступним вузлом (див. завдання 2). Поле Next останнього елемента ланцюжка та поле Prev першого елемента ланцюжка рівні nil. Для доступу до будь- якого елемента двозвязного списку досить мати вказівник на один з його елементів, однак для прискорення операцій зі списком звичайно зберігають три вказівники: на перший елемент списку (first), на його останній елемент (last) і на поточний елемент (current). Для порожнього списку всі ці вказівники втановлюються рівними nil. Як у випадку стека й черги, значенням елемента списку вважається значення його поля Data. Дано вказівник Р0 на один з елементів непустого двозвязного списку. Вивести число N — кількість елементів у списку, а також вказівники Р1 й Р2 на перший й останній елементи списку. 2. Циклічний однозв’язний списокДодайте в клас односвязного кільцевих списків метод вставки ланки перед заданим. 3. Циклічний двозв’язний списокНехай L означає кільцевий (циклічний) двонапрямлений список з заголовним звеном (рис. 15) при наступному описі такого списку: type ТЕ2 = …; {тип елементів списку} список2=↑звено2; звено2=record елем: ТЕ2; поп,наст: список2 end; і нехай Е означає величину типу ТЕ2. Описати функцію чи процедуру, яка: Підраховує кількість елементів списку L, у яких рівні “сусіди”; Завдання до лабораторної роботи №3Розробити проект, в якому на формі розмістити необхідні компоненти для введення координат вершин трикутника (TEdit, TLabel, TMaskEdit). Для виконання обчислень і завершення роботи програми використати компоненти TButton. Для вибору необхідного варіанту обчислень застосувати компонент RadioButton або TCheckBox. Результати обчислень для парних варіантів виводити в компонент TLabel, для непарних в компонент TEdit. Для компонентів, які відображують результати роботи заборонити можливість правки в компоненті. Забезпечити перевірку введених даних із видачею відповідного повідомлення та блокуванням компонентів форми у випадку некоректних даних. Варіанти завдань. 1. Бісектриси трикутника.
Завдання до лабораторної роботи №4Розробити проект, що табулює задану функцію на відрізку АВ з кроком h=(В-А)/(n-1). На головній формі проекту вводяться початкові дані (початок та кінець відрізка АВ, крок табулювання h, кількість ітерацій n, а також значення додаткових змінних) та розміщуються кнопки: виклик форм відображення результатів, закриття форм відображення результатів та кнопка завершення проекту в цілому. На другій формі розмістити графік функції, при цьому заборонити закриття цієї форми стандартними засобами. На третій формі розмістити результати табулювання функції у вигляді таблиці. Таблиця організована за допомогою компонента TStringGrid. При цьому в першій колонці вказується номер ітерації, в другій колонці – аргумент функції, в третій – результат обчислення, в четверту виводиться умова, відповідно до якої проведено обчислення функції (наприклад 0<x<3). Забезпечити введення початкових даних по замовчуванню. При введенні заданих величин або зміні їхнього значення автоматично повинно обчислюватись значення незаданої величини і виводисть у відповідне поле (наприклад, для варіанту №1 при введенні значень А, В, та n повинно обчислюватись значення h). При введенні некоректних даних в форму для парних варіантів кнопку отримання результатів зробити неактивною, для непарних варіантів – видати messagedlg з повідомленням про помилку і без виведення результатів. Варіанти завдань. З повагою ІЦ "KURSOVIKS"! |