
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 2
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Завдання лабораторної роботи
- •Лабораторна робота № 4
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 5
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 6
- •Завдання лабораторної роботи
- •Лабораторна робота № 7
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 8
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 9
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 10
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Список літератури
Завдання лабораторної роботи
Перед початком роботи повторити теоретичний матеріал про організацію рекурсивних обчислень, структуру, форми запису, схеми виконання, переваги та недоліки рекурсивних функцій.
Розробити алгоритм розв’язування задачі з індивідуального завдання.
Написати ітераційний (нерекурсивний) варіант (або кілька варіантів) заданої функції. У процесі роботи ця функція може звертатися до інших допоміжних функцій.
Записати основну програму, в якій забезпечити введення вхідних даних для перевірки правильності роботи розробленої функції та зручне відображення результатів на екрані. Якщо це сприятливо для програми, то розробити відповідні функції, наприклад, для введення та виведення даних, виконання певних перетворень або перевірок тощо.
Ввести текст програми та зберегти його в особистому каталозі.
Реалізувати програму для декількох наборів вхідних даних і занотувати результати.
Написати рекурсивний варіант реалізації заданої функції. Можливо, що рекурсивна функція буде викликатися з іншої додаткової функції або рекурсивна функція буде виконувати тільки якусь частину з того завдання, яке має виконувати вказана функція. Обов’язково треба звернути увагу на базис – умову завершення рекурсії та на коректне задання параметрів і запис рекурсивних викликів. Яку рекурсію – хвостову чи внутрішню краще застосувати в рекурсивній функції? Яка між ними різниця?
Реалізувати програму з рекурсивною функцією для тих самих вхідних даних, що застосовувалися при виконанні п.5, і порівняти отримані результати. Записати їх у звіт.
Доповнити рекурсивну функцію операторами виведення номера виклику функції. Для цього можна скористатись одним із параметрів функції, а якщо відповідного немає, то доповнити список таким параметром. Можна також застосувати відповідно оголошену глобальну або статичну змінну. Значення цього контрольного параметра треба виводити перед рекурсивним викликом і після нього з відповідним текстовим повідомленням. Запустити програму для рекурсії невеликої глибини (3-5). Проаналізувати виведені значення, пояснити їх і занести у звіт.
Оформити звіт з лабораторної роботи. У висновках до роботи порівняти рекурсивний та ітераційний (нерекурсивний) варіанти реалізації заданих функцій.
Варіанти індивідуальних завдань
Розробити функцію, яка обчислює т. зв. цифровий корінь заданого довгого натураль¬ного числа (цифровий корінь знаходять так: додають всі цифри цього числа, потім всі цифри знайденої суми і повторювати цей процес доти, поки в результаті не буде однорозрядне число – цифра). Згенерувати масив з N випадкових довгих беззнакових цілих чисел (кожне число має складатися з двох частин – випадкових цілих чисел). Використовуючи розроблену функцію, знайти цифровий корінь кожного з цих чисел. Результат подати у формі таблиці.
Розробити функцію, яка перевіряє, чи входить у заданий символьний рядок вказана трисимвольна комбінація (бібліотечну функцію strstr() не застосовувати). З клавіатури у масив ввести декілька символьних рядків і комбінацію з трьох символів. Використовуючи розроблену функцію, вказати, в які з введених рядків входить задана комбінація.
Розробити функцію для порівняння двох українських слів за абетковим порядком. З клавіатури по одному ввести набір українських слів і занести їх у масив символьних рядків. Використовуючи розроблену функцію, відсортувати введені слова за абетковим порядком.
Розробити функцію, параметром якої є символьний рядок, що зберігає арифметичний вираз виду: n1 ± n2 ± n3 ± n4 ± … , де n1, n2, n3, n4 … – цілі натуральні числа; ± – знак арифметичної операції (плюс або мінус). Функція має обчислити та повернути значення заданого виразу. З клавіатури ввести декілька рядків із виразами. Використовуючи розроблену функцію, обчислити та надрукувати значення кожного з них.
Розробити функцію, яка обчислює суму двох n-розрядних трійкових чисел (
), заданих у вигляді символьних рядків. З клавіатури ввести декілька рядків із трійковими кодами чисел. На основі розробленої функції обчислити суму всіх пар цих чисел. Надрукувати кожну пару та їхню суму в окремому рядку.
Розробити функцію, яка обчислює скалярний добуток двох векторів дійсних чисел однакової довжини. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції визначити номери двох рядків введеної матриці, скалярний добуток яких найбільший. Поміняти місцями елементи цих рядків і надрукувати отриману матрицю.
Розробити функцію, яка визначає і друкує всі слова із заданого речення, що містять вказану символьну комбінацію, незалежно від регістра літер. З клавіатури в масив символьних рядків вввести декілька речень. Використовуючи розроблену функцію, надрукувати всі слова з цих речень, в яких є задане буквосполучення.
Розробити функцію, яка вилучає із заданої матриці дійсних чисел всі рядки, в яких мінімальний елемент не є першим, і повертає кількість вилучених рядків. Вилучення рядка полягає в підтягуванні всіх наступних рядків угору. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції перевірити рядки введеної матриці та вилучити ті, що не відповідають умові. Надрукувати матрицю після вилучення і вказати кількість видалених рядків.
Розробити функцію, яка визначає та виводить на екран всі можливі подання заданого натурального числа N (N 50000) у формі суми k (k 10) різних натуральних доданків. З клавіатури ввести масив беззнакових цілих чисел. Використовуючи розроблену функцію, подати розклад кожного з введених чисел на задану кількість доданків.
Розробити функцію, яка обчислює найменше спільне кратне (НСК) двох заданих натуральних чисел. З клавіатури ввести декілька беззнакових цілих чисел. Використовуючи розроблену функцію, визначити НСК усіх введених чисел.
Розробити функцію, яка вставляє в масив дійсних чисел, відсортований у порядку зростання значень елементів, додаткове число, зберігаючи загальну впорядкованість. З клавіатури ввести матрицю дійсних чисел, в якій елементи кожного рядка відсортовані за зростанням значень, та додаткове число. Використовуючи розроблену функцію, вставити це число в кожен рядок матриці на відповідне місце як додатковий елемент. Надрукувати доповнену матрицю.
Розробити функцію, яка формує та виводить на екран всі неоднакові підмножини вказаної розмірності М, що формуються із символів заданого рядка (у рядку всі символи різні, довжина рядка не менша за М ). Функція має повертати кількість знайдених підмножин. З клавіатури ввести слово. Використовуючи розроблену функцію, надрукувати всі підмножини заданої довжини із літер цього слова.
Розробити функцію, яка перевіряє, чи заданий символьний рядок є правильним записом 16-го коду цілого додатного числа, і повертає десяткове значення цього числа (або -1 у разі помилки). З клавіатури ввести послідовність символьних рядків із 16-ми кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з цих чисел. Надрукувати результат у формі таблиці, відзначивши рядки, в яких записані неправильні 16-ві коди.
Розробити функцію, яка перевіряє, чи заданий символьний рядок є паліндромом, тобто, однаково читається зліва направо і справа наліво (великі й малі літери у паліндромах не розрізняються, пробіли та розділові знаки пропускаються). З клавіатури ввести послідовність символьних рядків. Використовуючи розроблену функцію, вказати для кожного з рядків, чи є він паліндромом. Результат подати у формі таблиці.
Розробити функцію, яка знаходить усі прості дільники заданого натурального числа N та вказує кількість повторень кожного з них (наприклад, 792 = 2 × 2 × 2 × 3 × 3 × 11 ). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, подати розклад кожного з введених чисел на прості множники.
Розробити функцію, яка обчислює найбільший спільний дільник (НСД) двох заданих натуральних чисел. З клавіатури ввести декілька беззнакових цілих чисел. Використовуючи розроблену функцію, визначити НСД усіх введених чисел.
Розробити функцію, яка формує символьний рядок, що відповідає коду заданого цілого числа в системі числення з основою N (N 20). У масив занести послідовність введених з клавіатури цілих натуральних чисел – введення має завершуватись довільним символом. На основі розробленої функції надрукувати таблицю введених чисел та їхніх кодів.
Розробити функцію, яка визначає, чи слово, що перевіряється, відповідає заданому шаблону. Шаблон складається із набору літер та знаків * і ?. Літери в шаблоні вказують, що саме такий символ має бути в цьому місці слова, * позначає довільну кількість (або відсутність) будь-яких літер, а ? – одну довільну літеру. З клавіатури в масив символьних рядків ввести декілька різних слів та шаблон для перевірки. Використовуючи розроблену функцію, вказати, які з цих слів відповідають шаблону.
Розробити функцію, яка обчислює суму елементів заданої матриці дійсних чисел – доцільно скористатися додатковою функцією (функціями) для обчислення суми елементів рядка (стовпчика). Хоча б один з варіантів функції повинен давати змогу опрацьовувати матрицю довільної розмірності. З клавіатури ввести матрицю дійсних чисел. Використовуючи розроблену функцію, обчислити суму всіх її елементів.
Розробити функцію, яка формує символьний рядок, що відповідає п’ятірковому коду заданого цілого числа (не звертатись до відповідних бібліотечних функцій). У масив занести послідовність введених з клавіатури цілих натуральних чисел – введення має завершуватись нулем. На основі розробленої функції надрукувати таблицю введених чисел та їхніх п’ятіркових кодів.
Розробити функцію, яка обчислює цілочисловий степінь заданого дійсного аргумента, використовуючи т. зв. швидкий індійський метод:
Сформувати
масив зK
випадкових дійсних чисел у діапазоні
1..100 (окремо згенерувати цілу і дробову
частини числа). На основі розробленої
функції надрукувати таблицю згенерованих
чисел та їхніх степенів (щонайменше
трьох-чотирьох).
Розробити функцію, яка здійснює пошук заданого елемента у впорядкованому за зростанням значень масиві цілих чисел, використовуючи метод половинного ділення. Функція має повертати номер цього елемента (починаючи з 1) або 0, якщо такого елемента в масиві нема. З клавіатури ввести матрицю цілих чисел. На основі розробленої функції визначити для кожного рядка, чи містить він задане число і якщо так, то вказати номер відповідного елемента.
Розробити функцію, яка визначає у заданому реченні кількість слів, що містять вказану літеру. З клавіатури в масив символьних рядків ввести декілька речень. Використовуючи розроблену функцію, визначити загальну кількість таких слів та речення, в якому їх найбільше.
Розробити функцію, яка перевіряє, чи два задані довгі цілі числа сформовані через перестановку цифр (тобто, кількість і склад цифр у числах збігаються). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, надрукувати групи чисел, які є взаємними перестановками, або вказати, що таких нема.
Розробити функцію, яка обчислює суму двох чисел, заданих у сімковій системі числення і записаних у формі символьних рядків (кожне число може складатися із 1 . . 50 сімкових цифр). З клавіатури ввести декілька рядків із сімковими кодами чисел. На основі розробленої функції обчислити суму всіх пар цих чисел. Надрукувати кожну пару та їхню суму в окремому рядку.
Розробити функцію, яка формує та виводить на екран всі неоднакові послідовності з N нулів та одиниць, що містять рівно K одиниць (N і K – два цілі числа, K N 64 ). Проілюструвати роботу функції для різних вхідних значень.
Розробити функцію, яка обчислює значення полінома степеня n (
)
у заданій точці
(
– дійсне число), не використовуючи операції піднесення до степеня. Коефіцієнти полінома є дійсними числами і зберігаються у масиві, починаючи зan. З клавіатури ввести матрицю дійсних чисел розмірності
. Використовуючи розроблену функцію, визначити значення поліномів степеняn, для коефіцієнтів, що задаються елементами кожного з m рядків матриці.
Розробити функцію, яка перетворює заданий символьний рядок, в якому записано двійковий код числа, у відповідне десяткове число і повертає значення цього числа (або -1 у разі помилкових символів). З клавіатури ввести декілька рядків із двійковими кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з них. Надрукувати таблицю введених двійкових кодів та їхніх десяткових значень, відзначивши коди з помилками.
Розробити функцію, яка переставляє у зворотному порядку цифри заданого довгого цілого числа (наприклад, число 5321 перетворюється у 1235 ). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, замінити (прореверсувати) всі числа цього масиву і надрукувати результат заміни.
Розробити функцію, яка міняє місцями відповідні за номером елементи двох векторів цілих чисел однакової довжини. З клавіатури ввести цілочислову матрицю. На основі розробленої функції переставити рядки введеної матриці у зворотному порядку. Надрукувати матрицю після переставлення елементів.