
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 2
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Завдання лабораторної роботи
- •Лабораторна робота № 4
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 5
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 6
- •Завдання лабораторної роботи
- •Лабораторна робота № 7
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 8
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 9
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 10
- •Завдання лабораторної роботи
- •Варіанти індивідуальних завдань
- •Список літератури
Лабораторна робота № 2
Тема роботи: Програмування функцій. Взаємодія формальних і фактичних параметрів
Мета роботи: навчитися розробляти функції, які реалізують задані дії та повертають необхідні значення; практично засвоїти способи передавання у функції значень різних типів та повернення із функцій результатів їхнього виконання.
Завдання лабораторної роботи
Уважно прочитати умову задачі індивідуального завдання, де вказано, яка саме функція має бути розроблена в програмі. Ця функція обов’язкова, але можна (і здебільшого доцільно) створити й інші функції, які сприятимуть кращій структуризації програми (наприклад для введення або виведення даних, перевірки певних умов, обчислення необхідних значень тощо).
Продумати склад параметрів кожної функції і тип значення, яке вона повертає. У випадках, коли функція повинна повертати декілька різних значень, то одне з них можна передати як результуюче значення функції, а всі інші треба записати за адресами, які функція має отримати через свої параметри-вказівники. Якщо ж у функцію треба передати адресу вказівника, в який буде записано адресу певного об’єкта, то відповідний параметр має бути вказівником на вказівник, тобто, зберігати адресу цього вказівника.
Особливу увагу слід звертати на параметри функцій, які є масивами або символьними рядками, враховуючи, що відповідний формальний параметр розглядається у функції як змінна-вказівник на початок масиву (символьного рядка).
Треба обов’язково пам’ятати, що масиви і символьні рядки, які створюються у функціях як їхні внутрішні змінні, стають недоступними після завершення роботи функції і можуть бути затерті іншими функціями. Тому звертатись до них із зовнішніх функцій програми не можна. Якщо потрібно повернути з функції масив або символьний рядок, то місце для цього масиву (рядка) має бути виділене в тій частині програми, в якій надалі він буде використовуватись. У функцію, яка створює масив (рядок), через відповідний параметр необхідно передати адресу, за якою мають бути записані елементи створеного масиву (рядка).
Оскільки в мові С функції є самостійними програмними одиницями, то кожну створену функцію (групу функцій) можна ввести та відкомпілювати автономно, щоб перевірити її синтаксичну правильність.
У загальній програмі доцільно першою записати функцію main(), а всі інші розроблені функції розташувати за нею. В заголовній частині програми необхідно оголосити прототипи всіх користувацьких функцій.
Виконуючи звертання до функцій, треба перевіряти, чи типи і порядок запису фактичних параметрів строго узгоджені з формальними параметрами відповідних функцій, а також, чи правильно застосовується значення, яке повертає функція.
Оформити звіт з лабораторної роботи, в якому вказати: • задачу індивідуального завдання; • текст розробленої програми з усіма функціями та коментарями; • результати виконання програми для різних значень вхідних даних; • висновок.
Варіанти індивідуальних завдань
Розробити функцію, яка циклічно зсуває ліворуч на одну позицію всі елементи заданого цілочислового вектора (перший елемент переходить на місце зсунутого останнього). Згенерувати вектор з К випадкових цілих чисел і надрукувати значення його елементів. Використовуючи розроблену функцію, циклічно зсунути елементи згенерованого вектора так, щоб першим став його найменший елемент. Надрукувати змінений вектор.
Розробити функцію, яка визначає найдовше слово у заданому символьному рядку і повертає це слово та його довжину (слово треба записати за адресою, що задається у списку параметрів функції). З клавіатури ввести декілька речень. На основі розробленої функції визначити і надрукувати найдовше слово серед усіх слів введених речень.
Розробити функцію, яка формує стрінг, що є словесним записом (числівником) заданого двоцифрового числа, наприклад "сорок три" у разі числа 43. Згенерувати послідовність з N випадкових двоцифрових чисел. Використовуючи розроблену функцію, надрукувати таблицю значень цих чисел та відповідних числівників.
Розробити функцію, яка для заданого порядковим номером дня року визначає відповідну дату: <День> <Місяць> (найменування), наприклад, 50-й день року це – 19 лютого. З клавіатури ввести декілька випадкових чисел, що задають номери днів поточного року. Використовуючи розроблену функцію, надрукувати дати (день і найменування місяця), що відповідають кожному з цих днів.
Розробити функцію, яка вилучає з речення перше слово, що містить задану комбінацію символів, та повертає адресу кінця цього слова. З клавіатури ввести речення і буквосполучення. На основі розробленої функції вилучити з введеного речення всі слова, що містять задане буквосполучення. Надрукувати результат вилучення.
Розробити функцію, яка в заданому символьному рядку міняє місцями останнє слово та слово, номер якого задається другим параметром функції (якщо слова з такими номером немає, то речення не змінюється). З клавіатури ввести декілька речень. Використовуючи розроблену функцію, переставити місцями в усіх введених реченнях третє слово з останнім.
Розробити функцію, яка перевіряє, чи елементи заданого масиву дійсних чисел впорядковані за спаданням значень. Якщо зустрінеться елемент, що не відповідає спадному порядку, то його треба вставити на відповідне місце в масиві. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції перевірити всі рядки введеної матриці та змінити ті, в яких були невпорядковані елементи. Надрукувати отриману матрицю.
Розробити функцію, яка перевіряє, чи заданий символьний рядок є правильним записом 16-го коду цілого додатного числа, і повертає десяткове значення цього числа (або -1 у разі помилки). З клавіатури ввести послідовність символьних рядків із 16-ми кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з цих чисел. Надрукувати результат перетворення кодів у формі таблиці, відзначивши рядки, в яких записані неправильні 16-ві коди.
Розробити функцію, яка формує символьний рядок з 2-10-м кодом заданого беззнакового десяткового числа (у рядку між тетрадами коду має бути один пробіл). Згенерувати масив із заданої кількості цілих випадкових чисел. На основі розробленої функції надрукувати таблицю цих чисел та їхніх 2-10-х кодів.
Розробити функцію, яка шукає у заданому символьному рядку перше слово, що містить вказану літеру. Функція повинна повертати два вказівники: на початок і на кінець знайденого слова (або NULL, якщо такого слова немає). Використовуючи розроблену функцію, виділити і надрукувати всі слова з введеного речення, в яких зустрічається задана літера, або вивести повідомлення про відсутність таких слів.
Розробити функцію, яка здійснює заміну в заданому реченні всіх малих українських та латинських літер на відповідні заголовні літери і повертає кількість слів у цьому реченні. З клавіатури ввести декілька речень. Використовуючи розроблену функцію, надрукувати всі введені речення великими літерами. Наприкінці вказати, яке речення складається з найбільшої кількості слів. Підказка: у функції скористатись масивами великих і малих літер української абетки.
Розробити функцію, яка вставляє в масив дійсних чисел, відсортований у порядку зростання значень елементів, додаткове число, зберігаючи загальну впорядкованість. З клавіатури ввести матрицю дійсних чисел, в якій елементи кожного рядка відсортовані за зростанням значень. Використовуючи розроблену функцію, вставити в кожен рядок матриці на відповідне місце заданий додатковий елемент. Надрукувати доповнену матрицю.
Розробити функцію, яка перевіряє, чи два задані довгі цілі числа сформовані через перестановку цифр (тобто, кількість і склад цифр у числах збігаються). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, надрукувати групи чисел, які є взаємними перестановками, або вказати, що таких нема.
Розробити функцію, яка вставляє у речення задане слово. Нове слово має стати в реченні n-ним ( n задається як третій параметр функції). З клавіатури ввести три символьні рядки і слово. Використовуючи розроблену функцію, вставити додаткове слово у введені рядки так, щоб у першому рядку вовно стало першим, у другому – третім, а в останньому – п’ятим.
Розробити функцію, яка формує вектор із заданої кількості цілих випадкових чисел, що потрапляють у діапазон min .. max. Cеред елементів вектора не повинно бути однакових. Використовуючи розроблену функцію, сформувати матрицю заданого розміру, у кожному рядку якої всі елементи різні. Вказати значення найбільшого і найменшого елементів сформованої матриці.
Розробити функцію, яка міняє у заданому символьному рядку всі слова, що містять вказану літеру на відповідну кількість символів х . З клавіатури ввести декілька речень. Використовуючи розроблену функцію, ”заховати“ ті слова з введених речень, в яких зустрічається задана літера.
Розробити функцію, яка вилучає з речення слово зі заданим порядковим номером (за умови, що таке слово є в реченні). З клавіатури ввести декілька речень. На основі розробленої функції вилучити друге та п’яте слово з кожного введеного речення. Надрукувати результат вилучення.
Розробити функцію, яка перетворює заданий символьний рядок, в якому записано двійковий доповнювальний код числа (перший біт визначає знак числа), у відповідне числове значення. З клавіатури ввести декілька стрінгів із двійковими доповнювальними кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з них. Надрукувати таблицю введених кодів та їхніх десяткових значень.
Розробити функцію, яка вилучає зі заданого символьного рядка всі числа і повертає їхню кількість (відомо, що в рядку є тільки цілі числа). З клавіатури ввести послідовність символьних рядків, в яких крім слів є цілі числа. Використовуючи розроблену функцію, витерти з введених рядків усі числа. Надрукувати рядки без чисел та зазначити, з якого рядка вилучено найбільше символів.
Розробити функцію, яка обчислює скалярний добуток двох векторів дійсних чисел однакової довжини. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції визначити номери двох рядків введеної матриці, скалярний добуток яких найбільший. Поміняти місцями елементи цих рядків і надрукувати отриману матрицю.
Розробити функцію, яка за заданою датою визначає порядковий номер дня року, враховуючи, чи рік високосний (наприклад, 14.02.1998 – 45-й день року). З клавіатури ввести декілька символьних рядків з датами у формі: День.Місяць.Рік. Використовуючи розроблену функцію, визначити порядкові номери днів у році, що відповідають кожній з цих дат. Підказка: високосним (що має 29 днів у лютому) вважається рік, що цілочислово ділиться на 4, але не ділиться на 100, крім років, що діляться на 400 (2000 рік високосний, а 1900 – ні).
Розробити функцію, яка виділяє зі заданого речення і виводить на екран усі слова, в яких є подвоєння літери, наприклад, життя. З клавіатури в масив занести декілька речень. Використовуючи розроблену функцію, надрукувати всі слова з цих речень, в яких зустрічається подвоєння літер.
Розробити функцію, яка циклічно зсуває елементи заданого цілочислового вектора на одну позицію праворуч (останній елемент масиву переходить на місце зсунутого першого). Згенерувати вектор з М випадкових трицифрових чисел і надрукувати значення його елементів. Потім, використовуючи розроблену функцію циклічно зсунути елементи згенерованого вектора праворуч так, щоб його найбільший елемент став останнім. Надрукувати вектор після зсування.
Розробити функцію, яка формує зі заданого цілого числа нове число, в якому кожна непарна цифра замінюється більшою парною (1 замінюється 2, 3 – 4, а 9 – 0). Згенерувати масив із R випадкових цілих чисел і надрукувати його. Потім, використовуючи розроблену функцію, замінити елементи цього масиву і надрукувати результат.
Розробити функцію, яка в заданому символьному рядку міняє місцями перше слово та слово, номер якого задається другим параметром функції (якщо слова з такими номером немає, то речення не змінюється). У процесі перестановки слів треба змінити регістри їхніх перших літер. З клавіатури ввести декілька речень. Використовуючи розроблену функцію, в усіх введених реченнях поміняти місцями перше слово з четвертим.
Розробити функцію, яка формує символьний рядок, що відповідає трійковому коду заданого цілого числа (не звертатись до відповідних бібліотечних функцій). У масив занести послідовність введених з клавіатури цілих натуральних чисел – введення має завершуватись нулем. На основі розробленої функції надрукувати таблицю введених чисел та їхніх трійкових кодів.
Розробити функцію, яка перевіряє, чи заданий символьний рядок є паліндромом, тобто, однаково читається зліва направо і справа наліво (великі й малі літери у паліндромах не розрізняються, пробіли та розділові знаки пропускаються). З клавіатури в масив занести послідовність символьних рядків. Використовуючи розроблену функцію, вказати, які з цих рядків є паліндромами, або зазначити, що таких нема.
Розробити функцію, яка формує символьний рядок, що складається з десяткових цифр 12-розрядного випадкового цілого числа – число сформувати з трьох випадкових чотирицифрових чисел. На основі розробленої функції сформувати масив зі заданої кількості таких символьних рядків (випадкових 12-розрядних чисел). Надрукувати сформований масив, зазначивши суму цифр кожного числа.
Розробити функцію, яка вилучає зі заданої матриці дійсних чисел всі рядки, в яких мінімальний елемент не є першим, і повертає кількість вилучених рядків. Вилучення рядка полягає в підтягуванні всіх наступних рядків угору. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції перевірити рядки введеної матриці та вилучити ті, що не відповідають умові. Надрукувати матрицю після вилучення і вказати кількість видалених рядків.
Розробити функцію, яка переставляє у зворотному порядку цифри заданого довгого цілого числа (наприклад, число 1328 перетворюється у 8231 ). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, замінити всі числа цього масиву і надрукувати результат заміни.
Лабораторна робота № 3
Тема роботи: Опрацювання масивів, символьних рядків і структур у функціях
Мета роботи: розширити вміння структуризувати програму на основі апарату функцій; практично закріпити знання про взаємодію формальних і фактичних параметрів функцій; навчитись передавати у функції, опрацьовувати та повертати з функцій дані, організовані як масиви, символьні рядки та/або структури з урахуванням специфіки кожного типу.