створення та обробки однонаправленого списку дійсних чисел. Методичні рекомендації До виконання лабораторної роботи № 6 Тема: Реалізація та відлагодження програм обробки списків. Мета: 1. Вивчення типу даних посилання в мові Турбо-Паскаль. Вивчення основних процедур роботи з Heap-пам’яттю. 2. Отримання навиків в організації динамічної структури даних – однонаправлений список. Практичний приклад створення та обробки однонаправленого списку дійсних чисел. · Задача: 1. Створити однонаправлений список дійсних чисел та заповнити його значеннями введенням з клавіатури. 2. Знайти та вивести на екран максимальний елемент списку. 3. Видалити максимальний елемент зі списку та вивести оновлений список. 4. Видалити список з Heap- пам’яті. · Опис вхідних – вихідних даних програми6 Вхідні дані: I::=<дійсне число – елемент списку, що вводиться з клавіатури>::= real; Вихідні дані: max::=<максимальний елемент списку>::= real; ukf::=<посилання на однонаправлений список дійсних чисел>::= ^uzel; uzel=record x:real; next:n; end; · Текст програми з коментарями: program sp; uses CRT; {Опис вузла списку} type n=^uzel; uzel=record x:real; next:n; end; var ukf:n; {Посилання на перший вузол списку – голова списку} uku:n; { Посилання на черговий вузол списку } ukmax:n; {Посилання на максимальний елемент списку} i,max:real; c:char; begin clrscr; {Занесання першого елементу в список} new(uku); ukf:=uku; c:='y'; writeln('Введите первый елемент'); readln(i); uku^.x:=i; {Формування списку в циклі} while c='y' do begin new(uku^.next); uku:=uku^.next; writeln('Введите очередной елемент'); readln(i); uku^.x:=i; writeln('Хотите продолжать?'); readln(c) end; uku^.next:=nil; {Формування кінця списку} {Пошук максимального елементу} max:=ukf^.x; ukmax:=ukf; uku:=ukf; while uku^.next<>nil do begin uku:=uku^.next; if uku^.x>max then begin max:=uku^.x; ukmax:=uku end; end; writeln('max=',ukmax^.x:10:5); {Видалення максимального елементу із списку:} uku:=ukf; if ukf=ukmax then {Видаляємо максимальний - якщо він пеший} begin ukf:=ukf^.next; dispose(uku); uku:=ukf; end else begin {Переміщення по списку до максимального} while uku^.next<>ukmax do uku:=uku^.next; {Видаляємо максимальний – якщо він останній} if ukmax^.next=nil then begin uku^.next:=nil; dispose(ukmax) end else {Видаляємо максимальний – якщо він в середині списку} begin uku^.next:=ukmax^.next; dispose(ukmax) end; end; {Виведення списку на екран} writeln('Новый список'); uku:=ukf; repeat writeln(uku^.x:10:5); uku:=uku^.next until uku=nil; {Видалення списку з пам’яті} uku:=ukf; repeat ukf:=ukf^.next; dispose(uku); uku:=ukf until uku=nil; if ukf=nil then writeln('Список пуст'); readln; end. · Копія вікна виконання програми: Введите первый елемент Введите очередной елемент Хотите продолжать? Y Введите очередной елемент -67 Хотите продолжать? Y Введите очередной елемент Хотите продолжать? N max= 456.00000 Новый список 45.00000 7.00000 -67.00000 Список пуст Варіанти завдань: 1. Створити однонаправлений список дійсних чисел, який може вміщати рівні числа. Знайти та вивести максимальний елемент списку. Видалити із списку всі максимальні елементи та вивести оновлений список. Видалити список. 2. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти суму додатних елементів списку. Видалити із списку всі додатні елементи та вивести оновлений список. Видалити список. 3. Створити однонаправлений список натуральних чисел. Знайти та вивести добуток парних елементів списку. Видалити із списку всі парні елементи та вивести оновлений список. Видалити список. 4. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти добуток та підрахувати кількість від’ємних елементів списку. Видалити із списку всі від’ємні елементи та вивести оновлений список. Видалити список. 5. Створити однонаправлений список натуральних чисел. Знайти та вивести суму квадратів парних елементів списку. Видалити із списку всі парні елементи та вивести оновлений список. Видалити список. 6. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі від’ємні числа в списку на їх модулі та вивести оновлений список. Видалити список. 7. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі додатні числа їх квадратами та вивести оновлений список. Видалити список. 8. Створити однонаправлений список дійсних чисел. Знайти та вивести максимальний та мінімальний елементи списку. Видалити із списку мінімальний та максимальний елементи та вивести оновлений список. Видалити список. 9. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти суму квадратів від’ємних елементів списку. Видалити із списку перший від’ємний елемент та вивести оновлений список. Видалити список. 10. Створити однонаправлений список дійсних чисел. Знайти та вивести максимальний та мінімальний елементи списку та їх суму. Видалити із списку мінімальний елемент та вивести оновлений список. Видалити список. 11. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі від’ємні числа їх квадратами та вивести оновлений список. Знайти максимальний елемент списку. Видалити список. 12. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Створити новий список, який вміщає тільки додатні елементи першого. Вивести новий список. Видалити списки. 13. Створити однонаправлений список дійсних чисел, який може вміщати рівні числа. Знайти та вивести мінімальний елемент списку. Видалити із списку всі мінімальні елементи та вивести оновлений список. Видалити список. 14. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Створити новий список, який вміщає тільки квадрати від’ємних елементів першого списку. Вивести новий список. Видалити списки. 15. Створити однонаправлений список натуральних чисел. Знайти та вивести елементи списку, кратні 3. Видалити із списку всі ці елементи та вивести оновлений список. Видалити список. 16. Створити однонаправлений список дійсних чисел, який може вміщати рівні числа. Знайти та вивести максимальний елемент списку. Видалити із списку всі максимальні елементи та вивести оновлений список. Видалити список. 17. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти суму додатних елементів списку. Видалити із списку всі додатні елементи та вивести оновлений список. Видалити список. 18. Створити однонаправлений список натуральних чисел. Знайти та вивести добуток парних елементів списку. Видалити із списку всі парні елементи та вивести оновлений список. Видалити список. 19. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти добуток та підрахувати кількість від’ємних елементів списку. Видалити із списку всі від’ємні елементи та вивести оновлений список. Видалити список. 20. Створити однонаправлений список натуральних чисел. Знайти та вивести суму квадратів парних елементів списку. Видалити із списку всі парні елементи та вивести оновлений список. Видалити список. 21. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі від’ємні числа в списку на їх модулі та вивести оновлений список. Видалити список. 22. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі додатні числа їх квадратами та вивести оновлений список. Видалити список. 23. Створити однонаправлений список дійсних чисел. Знайти та вивести максимальний та мінімальний елементи списку. Видалити із списку мінімальний та максимальний елементи та вивести оновлений список. Видалити список. 24. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Знайти суму квадратів від’ємних елементів списку. Видалити із списку перший від’ємний елемент та вивести оновлений список. Видалити список. 25. Створити однонаправлений список дійсних чисел. Знайти та вивести максимальний та мінімальний елементи списку та їх суму. Видалити із списку мінімальний елемент та вивести оновлений список. Видалити список. 26. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Замінити всі від’ємні числа їх квадратами та вивести оновлений список. Знайти максимальний елемент списку. Видалити список. 27. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Створити новий список, який вміщає тільки додатні елементи першого. Вивести новий список. Видалити списки. 28. Створити однонаправлений список дійсних чисел, який може вміщати рівні числа. Знайти та вивести мінімальний елемент списку. Видалити із списку всі мінімальні елементи та вивести оновлений список. Видалити список. 29. Створити однонаправлений список дійсних чисел, який може вміщати як додатні, так і від’ємні числа. Створити новий список, який вміщає тільки квадрати від’ємних елементів першого списку. Вивести новий список. Видалити списки. 30. Створити однонаправлений список натуральних чисел. Знайти та вивести елементи списку, кратні 3. Видалити із списку всі ці елементи та вивести оновлений список. Видалити список. 31. Створити однонаправлений список дійсних чисел. Знайти та вивести максимальний елемент списку. Видалити із списку ті елементи, квадрат яких менше максимального елементу.Вивести оновлений список. Видалити список. |