DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Програмування функцій. Взаємозв’язок формальних і фактичних параметрів.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

Лабораторна робота № 9 Тема роботи: Програмування функцій. Взаємозв’язок формальних і фактичних параметрів. Мета роботи: Навчитись:  структуризувати програму, виділяючи її основні складові частини;  розробляти функції, які реалізують задані дії та повертають необхідні значення;  оголошувати прототипи функцій;  звертатись до функцій, передавати їм дані різних типів і використовувати результати виконання функцій. Методичні вказівки: 1. Уважно прочитати умову задачі, де вказано, яка саме функція має бути розроблена в програмі. Ця функція обов’язкова, але можна (а в багатьох задачах доцільно) створити й інші функції, які сприятимуть кращій структуризації програми (наприклад для введення або виведення даних, перевірки певних умов, обчислення необхідних значень тощо). 2. Продумати склад параметрів кожної функції і тип значення, яке вона повертає. Якщо функція повинна повертати декілька різних значень, то одне з них можна передати як результуюче значення функції, а всі інші треба записати за адресами, які мають бути передані функції через параметри-вказівники. При цьому для повернення значень адрес через параметри функції застосовують конструкцію ”вказівник на вказівник“. 3. Особливу увагу слід звертати на параметри функцій, які є масивами або символьними рядками, враховуючи, що відповідний формальний параметр розглядається у функції як змінна-вказівник на початок масиву (символьного рядка). 4. Треба обов’язково пам’ятати, що масиви і символьні рядки, які створюються у функціях як їх внутрішні змінні, стають недійсними після завершення роботи функції. Тому звертатись до них із зовнішніх функцій програми не можна. Якщо потрібно повернути з функції масив або символьний рядок, то місце для цього масиву (рядка) має бути виділене в тій частині програми, в якій надалі він буде використовуватись. У функцію, яка створює масив (рядок) через відповідний параметр необхідно передати адресу, за якою мають бути записані елементи створеного масиву (рядка). 5. Оскільки в мові С функції є самостійними програмними одиницями, то кожну створену функцію (групу функцій) можна ввести та відкомпілювати автономно, щоб перевірити синтаксичну правильність. 6. У загальній програмі доцільно першою записати функцію main(), а всі інші розроблені функції розташувати за нею. В заголовній частині програми необхідно оголосити прототипи всіх користувацьких функцій. 7. Виконуючи звертання до функцій, треба перевіряти, чи типи і порядок запису фактичних параметрів строго узгоджені з формальними параметрами відповідних функцій, а також, чи правильно застосовується значення, яке повертає функція. Література: [1] . . [7] , [10] . . [14] . Варіанти індивідуальних завдань Розробити функцію, яка визначає найдовше слово у заданому символьному рядку і повертає це слово та його довжину (слово треба записати за адресою, що задається у списку параметрів функції). З клавіатури ввести декілька речень. На основі розробленої функції визначити і надрукувати найдовше слово серед усіх слів введених речень. Розробити функцію, яка циклічно зсуває вліво на одну позицію всі елементи заданого цілочислового вектора (перший елемент переходить на місце зсунутого останнього). Згенерувати вектор з К випадкових цілих чисел і надрукувати значення його елементів. Потім, використовуючи розроблену функцію, циклічно зсунути елементи згенерованого вектора так, щоб першим став його найменший елемент. Надрукувати вектор після зсування. Розробити функцію, яка визначає у заданому символьному рядку перше слово, що містить вказану літеру і повертає вказівник на кінець цього слова. Функція повинна повертати два вказівники: на початок і на кінець знайденого слова (або NULL, якщо такого слова немає). Використовуючи розроблену функцію, виділити і надрукувати всі слова з введеного речення, в яких зустрічається задана літера, або вивести повідомлення про відсутність таких слів. Розробити функцію, яка формує стрінг, що є словесним записом (числівником) заданого двоцифрового числа, наприклад "сорок три" у разі числа 43. Згенерувати послідовність з N випадкових двоцифрових чисел. Використовуючи розроблену функцію, надрукувати таблицю значень цих чисел та їхніх словесних записів. Розробити функцію, яка для заданого порядковим номером дня року визначає відповідну дату: <День> <Місяць> (найменування). З клавіатури ввести декілька випадкових чисел, що задають номери днів поточного року. Використовуючи розроблену функцію, надрукувати дати (день і найменування місяця), що відповідають кожному з цих днів. Розробити функцію, яка здійснює сортування одновимірного масиву дійсних чисел у порядку зростання значень елементів. На основі розробленої функції відсортувати за зростанням значень елементи кожного рядка введеної матриці дійсних чисел. Надрукувати відсортовану матрицю. Розробити функцію, яка вилучає з речення слово, задане своїм порядковим номером (за умови, що таке слово є в реченні). На основі розробленої функції вилучити друге та п’яте слово з введеного речення. Надрукувати результат вилучення. Розробити функцію, яка вилучає з речення всі слова, що містять задану комбінацію символів. З клавіатури ввести речення і буквосполучення. На основі розробленої функції вилучити з введеного речення всі слова, що містять задане буквосполучення. Надрукувати результат вилучення. Розробити функцію, яка перевіряє, чи заданий символьний рядок є правильним записом 16-го коду цілого додатного числа, і повертає десяткове значення цього числа (або -1 у разі помилки). З клавіатури ввести послідовність символьних рядків із 16-ми кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з цих чисел. Надрукувати результат перетворення кодів у формі таблиці, відзначивши рядки, в яких записані неправильні 16-ві коди. Розробити функцію, яка вилучає із заданої матриці дійсних чисел всі рядки, в яких мінімальний елемент не є першим, і повертає кількість вилучених рядків. Вилучення рядка полягає в підтягуванні всіх наступних рядків угору. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції перевірити рядки введеної матриці та вилучити ті, що не відповідають умові. Надрукувати матрицю після вилучення і вказати кількість видалених рядків. Розробити функцію, яка в заданому символьному рядку міняє місцями останнє слово та слово, номер якого задається другим параметром функції (якщо слова з такими номером немає, то речення не змінюється). З клавіатури ввести декілька речень. Використовуючи розроблену функцію, переставити місцями в усіх введених реченнях третє слово з останнім. Надрукувати результат перестаставляння слів. Розробити функцію, яка переставляє у зворотному порядку цифри заданого довгого цілого числа (наприклад, число 1328 перетворюється у 8231 ). З клавіатури ввести масив довгих цілих чисел. Використовуючи розроблену функцію, замінити всі числа цього масиву і надрукувати результат заміни. Розробити функцію, яка перетворює символьний рядок, що містить 2-10-й код числа, у відповідне числове десяткове значення. У разі неправильного коду функція має повертнути -1. З клавіатури ввести декілька символьних рядків із 2-10-ми кодами чисел. На основі розробленої функції надрукувати таблицю всіх введених 2-10-х кодів та їхніх десяткових значень, відзначивши коди з помилками. Розробити функцію, яка вставляє в масив дійсних чисел, відсортований у порядку зростання значень елементів, додаткове число, зберігаючи загальну впорядкованість. З клавіатури ввести матрицю дійсних чисел, в якій елементи кожного рядка відсортовані за зростанням значень. Використовуючи розроблену функцію, вставити в кожен рядок матриці на відповідне місце заданий додатковий елемент. Надрукувати доповнену матрицю. Розробити функцію, яка міняє у заданому символьному рядку всі слова, що містять вказану літеру на відповідну кількість символів х . З клавіатури ввести декілька речень. Використовуючи розроблену функцію, ”заховати“ ті слова з введених речень, в яких зустрічається задана літера. Розробити функцію, яка за заданою датою визначає порядковий номер дня року, враховуючи, чи рік високосний (наприклад, 14.02.1998 – 45-й день року). З клавіатури ввести декілька дат: <День> <Місяць> <Рік>. Використовуючи розроблену функцію, визначити порядкові номери днів у році, що відповідають кожній з цих дат. Підказка: високосним (що має 29 днів у лютому) вважається рік, що цілочислово ділиться на 4, але не ділиться на 100, крім років, що діляться на 400 (2000 рік високосний, а 1900 – ні). Розробити функцію, яка здійснює заміну в заданому реченні всіх малих українських та латинських літер на відповідні заголовні літери і повертає кількість слів у цьому реченні. Використовуючи розроблену функцію, надрукувати всі введені речення великими літерами. Наприкінці вказати, яке речення складається з найбільшої кількості слів. Підказка: у функції скористатись масивами великих і малих літер української абетки. Розробити функцію, яка вставляє у речення задане слово. Нове слово повинно стати в реченні n-ним ( n задається як третій параметр функції). З клавіатури ввести три символьні рядки і слово. Використовуючи цю функцію, вставити додаткове слово у введені рядки так, щоб у першому рядку вовно стало першим, у другому – третім, а в останньому – п’ятим. Розробити функцію, яка циклічно зсуває елементи заданого цілочислового вектора на одну позицію вправо (останній елемент переходить на місце зсунутого першого). Згенерувати вектор з М випадкових трицифрових чисел і надрукувати значення його елементів. Потім, використовуючи розроблену функцію циклічно зсунути елементи згенерованого вектора вправо так, щоб його найбільший елемент став останнім. Надрукувати вектор після зсування. Розробити функцію, яка формує вектор із заданої кількості цілих випадкових чисел, що потрапляють у діапазон min ..  max. Cеред елементів вектора не повинно бути однакових. Використовуючи розроблену функцію, сформувати матрицю заданого розміру, у кожному рядку якої всі елементи різні. Вказати значення найбільшого і найменшого елементів сформованої матриці. Розробити функцію, яка перетворює заданий символьний рядок, в якому записано двійковий доповнювальний код числа (перший біт визначає знак числа), у відповідне числове значення. З клавіатури ввести декілька стрінгів із двійковими доповнювальними кодами чисел. На основі розробленої функції обчислити десяткове значення кожного з них. Надрукувати таблицю введених кодів та їхніх десяткових значень. Розробити функцію, яка обчислює скалярний добуток двох векторів дійсних чисел однакової довжини. З клавіатури ввести матрицю дійсних чисел. На основі розробленої функції визначити номери двох рядків введеної матриці, скалярний добуток яких найбільший. Поміняти місцями елементи цих рядків і надрукувати отриману матрицю. Розробити функцію, яка вилучає зі заданого символьного рядка всі цифрові символи і повертає кількість вилучених цифр. З клавіатури ввести послідовність символьних рядків. Використовуючи розроблену функцію, витерти з введених рядків усі символи цифр. Надрукувати рядки без чисел та зазначити, з якого рядка вилучено найбільше символів. Розробити функцію, яка формує символьний рядок, що складається з десяткових цифр 12-розрядного випадкового цілого числа. Підказка: число сформувати з трьох випадкових чотирицифрових чисел. На основі розробленої функції сформувати масив зі заданої кількості таких символьних рядків (тобто випадкових 12-розрядних чисел). Надрукувати сформований масив. Розробити функцію, яка виділяє зі заданого речення і виводить на екран усі слова, в яких є подвоєння літери, наприклад, життя. Використовуючи розроблену функцію, надрукувати всі слова з цих речень, в яких зустрічається подвоєння літер. Розробити функцію, яка здійснює сортування одновимірного масиву довгих цілих чисел у порядку спадання. З клавіатури ввести матрицю, що складається з довгих цілих чисел. На основі розробленої функції відсортувати за спаданням значень елементи кожного рядка введеної матриці. Надрукувати відсортовану матрицю. Розробити функцію, яка формує символьний рядок, що відповідає трійковому коду заданого цілого числа (не звертатись до відповідних бібліотечних функцій). У масив занести послідовність введених з клавіатури цілих натуральних чисел – введення має завершуватись нулем. На основі розробленої функції надрукувати таблицю введених чисел та їхніх трійкових кодів. Розробити функцію, яка формує зі заданого цілого числа нове число, в якому кожна непарна цифра замінюється більшою парною (1 замінюється 2, 3 – 4, а 9 – 0). Згенерувати масив із R випадкових цілих чисел і надрукувати його. Потім, використовуючи розроблену функцію, замінити елементи цього масиву і надрукувати результат заміни. Розробити функцію, яка в заданому символьному рядку переставляє місцями два слова, порядкові номери яких задаються через параметри функції (якщо слів з такими номерами немає, то речення не змінюється). З клавіатури ввести декілька речень. На основі розробленої функції в усіх введених реченнях поміняти місцями друге слово з четвертим. Надрукувати речення після заміни. Розробити функцію, яка міняє місцями відповідні за номером елементи двох векторів цілих чисел однакової довжини. З клавіатури ввести цілочислову матрицю. На основі розробленої функції переставити рядки введеної матриці у зворотному порядку. Надрукувати матрицю після переставляння елементів. Лабораторна робота № 10 Тема роботи: Збереження даних у динамічній пам’яті. Мета роботи: Навчитись використовувати динамічну пам’ять для раціонального збереження та швидкого опрацювання даних програми. Методичні вказівки: 1. Основні дані кожної задачі мають зберігатись у динамічній пам’яті. При цьому для кожного даного слід виділити необхідну за обсягом ділянку пам’яті. Для формування у динамічній пам’яті наборів вказаних у завданні символьних рядків, чисел або структур доцільно створити масив вказівників, кожен елемент якого буде зберігати адресу відповідного даного. Якщо умова задачі вимагає сортування даних чи виконання певних перестановок динамічних елементів, то слід у міру можливості міняти місцями (переставляти) відповідні вказівники, не змінюючи розташування у динамічній пам’яті самих елементів. У випадках, коли в процесі виконання програми потрібно вилучати окремі елементи, слід спочатку звільнити ділянку динамічної пам’яті, яку займає елемент, що видаляється, а потім онулити або видалити відповідний вказівник. Перед завершенням роботи програми треба обов’язково звільнити всю зайняту динамічну пам’ять. Як і в попередній лабораторній роботі, у кожному завданні вказано функцію (або функції), що мають бути розроблені та використані в програмі. Крім цього можна створити й інші функції для кращої структуризації програми. У програмі треба забезпечити зручну форму ведення вхідних даних та наочне відображення результатів. Література: [1] . . [6]  , [17]  , [18]  . Варіанти індивідуальних завдань У динамічну пам’ять послідовно занести введені з клавіатури цілі числа (ознака завершення введення – число нуль). Перевірити всі введені числа та витерти ті з них, що не є простими. Надрукувати числа, які залишились. У програмі створити й застосувати функцію, яка перевіряє, чи є простим задане натуральне число. Підказка: простим вважається число, що не має інших дільників крім 1 та самого себе. У динамічну пам’ять занести послідовність введених з клавіатури речень (ознака завершення введення – довільна цифра замість речення). Переставити слова введених речень у зворотному порядку та надрукувати отримані речення. У програмі створити й застосувати функцію, яка змінює порядок слів у заданому реченні на зворотний. У динамічній пам’яті виділити місце для збереження матриці цілих чисел заданої розмірності. Заповнити матрицю випадковими дво- та трицифровими числами. Потім відсортувати за спаданням значень елементи кожного рядка сформованої матриці та надрукувати відсортовану матрицю. У програмі створити й застосувати функцію, яка сортує одновимірний масив цілих чисел у порядку спадання значень елементів. Оголосити масив з N вказівників, кожен з яких має зберігати адресу структури, що складається з двох полів: <довге ціле число>, <символьний рядок>. У динамічній пам’яті виділити місце для цих структур. З клавіатури послідовно ввести N довгих натуральних чисел і записати кожне з них у перше поле відповідної структури. Для кожного введеного числа сформувати символьний рядок з 16-м кодом цього числа та записати його в друге поле структури. Надрукувати таблицю введених десяткових чисел та їхніх 16-х значень. У програмі розробити й застосувати функцію, яка формує символьний рядок з 16-м кодом заданого довгого цілого числа (бібліотечні функції перетворення ”число-рядок” не використовувати). У динамічну пам’ять занести послідовність дат у формі символьних рядків, що мають форму: День. Місяць. Рік. Надрукувати таблицю, в якій для кожної дати вказати порядковий номер дня року, що відповідає цій даті. У програмі створити й застосувати функцію, яка за заданою датою визначає порядковий номер дня відповідного року, враховуючи, чи рік високосний (наприклад, 21.02.2000 – 52-й день року). Підказка: високосним (що має 29 днів у лютому) вважається рік, що цілочислово ділиться на 4, але не ділиться на 100, крім років, що діляться на 400 (2000 рік високосний, а 1900 – ні). У динамічну пам’ять занести послідовність введених з клавіатури українських речень (ознака завершення – введення символа * замість речення). Випадковим чином вибрати з введеного тексту речення з кількістю слів більшою за три і надрукувати це речення великими літерами. У програмі використати дві функції: 1) для визначення кількості слів у реченні, 2) для друку україномовного речення заголовними літерами (підказка: скористатись масивами великих і малих літер української абетки.). У динамічній пам’яті виділити місце для збереження матриці цілих чисел заданої розмірності. Заповнити матрицю даними, введеними з клавіатури. Потім сформувати нову матрицю, в яку перенести тільки ті рядки введеної матриці, в яких немає однакових елементів. Для кожного рядка нової матриці окремо виділяти місце в динамічній пам’яті. Надрукувати створену матрицю. У програмі розробити й застосувати функцію, яка перевіряє, чи серед елементів заданого одновимірного масиву є такі, що повторюються. У динамічну пам’ять занести послідовність введених з клавіатури символьних рядків (кількість рядків не перевищує значення KR). Вилучити ті з введених рядків, в яких заданана ключова послідовність символів зустрічається три та більше раз. Надрукувати речення, що залишились, і вказати, скільки речень витерто. У програмі створити й застосувати функцію, яка перевіряє, скільки разів у символьному рядку повторюється задана комбінація символів без огляду на регістри літер. У динамічну пам’ять занести набір введених з клавіатури довгих цілих натуральних чисел (ознака завершення введення – число нуль). Надрукувати таблицю введених чисел та їхніх двійкових значень. У програмі створити й застосувати функцію, яка формує символьний рядок з двійковим кодом заданого довгого цілого беззнакового числа (бібліотечні функції перетворення ”число-рядок” не використовувати). У динамічну пам’ять послідовно занести введені з клавіатури українські речення (ознака завершення введення – порожній рядок). Випадковим чином вибрати з введеного тексту три речення. Надрукувати вибрані речення так, щоб кожне слово починалось великою літерою. У програмі створити й застосувати функцію, яка міняє на заголовну першу букву кожного слова заданого україномовного речення (підказка: скористатись масивами великих і малих літер української абетки.). У динамічну пам’ять занести послідовність введених з клавіатури символьних рядків, у кожному з яких має бути записаний п’ятірковий код цілого числа (він може складатись із 1..6 п’ятіркових цифр). Перевірити, чи всі введені рядки є правильними п’ятірковими кодами, вилучити неправильні рядки й вказати їхні номери. Потім для рядків, що залишились, обчислити десяткові значення і надрукувати таблицю п’ятіркових кодів чисел та їхніх десяткових значень. У програмі створити й використати дві функції: 1) для перевірки правильності п’ятіркового коду, 2) для знаходження десяткового значення числа, заданого п’ятірковим кодом. У динамічну пам’ять занести послідовність введених з клавіатури речень (ознака завершення введення – рядок, що містить єдину літеру K ). Переставити введені речення так, щоб кількість їхніх слів відповідала спадному порядку. Надрукувати результат переставляння. У програмі застосувати функцію, яка визначає кількість слів у заданому реченні. У динамічну пам’ять занести послідовність введених з клавіатури рядків, кожен з яких містить прізвище, ім’я та по-батькові студента. Визначити й надрукувати найбільш поширене серед студентів чоловіче ім’я. У програмі створити й використати дві функції: перша повинна виділяти ім’я (друге слово) зі заданого символьного рядка, а друга має визначати – це чоловіче, чи жіноче ім’я. Підказка: можна вважати, що всі жіночі імена, закінчуються літерами а або я . З клавіатури у динамічну пам’ять занести матрицю дійсних чисел заданої розмірності, виділивши окрему ділянку для кожного рядка. Потім переставити рядки введеної матриці у порядку зростання значень сум елементів рядків. Надрукувати відсортовану матрицю. У програмі створити й застосувати функцію, яка обчислює суму елементів заданого вектора дійсних чисел. У динамічну пам’ять занести набір введених з клавіатури речень (ознака завершення введення – символ Q  ). У всіх введених реченнях заховати, замінивши відповідною кількістю зірочок, ті слова, що містять задану комбінацію символів, а речення, в яких такі слова відсутні, витерти. Надрукувати “засекречені” речення. У програмі створити й застосувати функцію, яка перевіряє, чи входять у речення слова, що містять задану послідовність символів, і якщо так, то замінює кожне з цих слів відповідною кількістю символів *. У динамічну пам’ять послідовно занести введені з клавіатури речення (ознака завершення – введення символа # замість речення). Вилучити з введеного тексту ті речення, в яких є слова, що складаються з десяти або більше літер. Надрукувати речення, що залишились, і вказати, скільки речень вилучено. У програмі створити й застосувати функцію, яка визначає кількість літер у найдовшому слові заданого речення. У динамічну пам’ять занести послідовність введених з клавіатури речень (ознака завершення введення – символ Х замість речення). Визначити серед введених ті речення, середня довжина слова в яких перевищує 6 літер, та витерти їх. Надрукувати речення, що залишились, і вказати, скільки речень витерто. У програмі створити й застосувати функцію, яка визначає середню довжину слова в заданому реченні (розділові знаки й інші небуквенні символи слід відкинути). У динамічній пам’яті виділити місце для KL символьних рядків, кожен з яких буде складатися із десяткових цифр 12-розрядного випадкового цілого числа. Заповнити всі рядки 12-розрядними випадковими числами та надрукувати їх. Потім вилучити ті числові рядки, в яких хоча б одна цифра повторюється три або більше раз. Надрукувати рядки, що залишились. У програмі створити й використати дві функції: 1) для формування символьного рядка з десяткових цифр 12-розрядного цілого випадкового числа (підказка: число сформувати з трьох випадкових 4-розрядних чисел); 2) для перевірки, чи є в числі (рядку символів) цифри, що повторюються понад два рази. У динамічну пам’ять занести послідовність введених з клавіатури речень (ознака завершення – введення символа # замість речення). Вилучити ті речення, в яких третім словом є слово АСУ. Надрукувати речення, що залишились, і вказати, скільки речень витерто. У програмі створити й застосувати функцію, яка перевіряє, чи в заданому реченні слово зі заданим номером збігається із вказаним ключовим словом (параметри функції: речення, номер слова й ключове слово). З клавіатури ввести розмірність матриці цілих чисел (відомо, що кількість рядків не перевищує R). У динамічній пам’яті виділити окрему ділянку для збереження кожного рядка цієї матриці та заповнити рядки випадковими цілими числами. Надрукувати сформовану матрицю. Потім вилучити з матриці ті рядки, сума елементів яких менша за суму елементів першого рядка. Надрукувати рядки, що залишились і вказати кількість вилучених. У програмі створити й використати три функції: 1) для заповнення масиву заданої довжини випадковими цілими числами; 2) для виведення не екран матриці заданої розмірності; 3) для обчислення суми елементів заданого одновимірного масиву. Розробити функцію, що перетворює символьний рядок, в якому записано двійковий доповнювальний код числа (перший біт задає знак цього числа), у відповідне десяткове числове значення. У динамічну пам’ять з клавіатури занести послідовність стрінгів із двійковими доповнювальними кодами додатних і від’ємних чисел (ознака завершення введення – порожній рядок). На основі розробленої функції обчислити десяткове значення кожного з введених чисел. Надрукувати результат у формі таблиці. З клавіатури у динамічну пам’ять занести матрицю дійсних чисел заданої розмірності, виділивши окрему ділянку для кожного рядка. Потім циклічно зсунути всі стовпчики введеної матриці на два вліво (для цього по черзі зсунути елементи кожного рядка). Надрукувати матрицю після зсування. У програмі створити й застосувати функцію, яка циклічно зсуває елементи заданого вектора дійсних чисел на n позицій уліво. Підказка: при циклічному зсуванні вліво початкові елементи вектора переходять на місця зсунутих останніх. У динамічну пам’ять послідовно занести введені з клавіатури довгі цілі числа (ознака завершення введення – число нуль). Перевірити всі введені числа та витерти ті з них, що містять цифру 7. Надрукувати числа, які залишились, та вказати число з найбільшою сумою цифр. У програмі створити й застосувати функцію, яка перевіряє, чи до складу заданого довгого цілого числа входить певна цифра та повертає суму цифр цього числа. У динамічну пам’ять занести послідовність введених з клавіатури символьних рядків (речень). Останній введений рядок повинен містити тільки одну цифру, яка задає номер шуканого слова у реченнях. Надрукувати з кожного речення слово, номер якого вказано в останньому введеному рядку, або вивести повідомлення про відсутність у даному реченні слова з таким номером. У програмі створити й застосувати функцію, яка повертає зі заданого речення слово, номер якого задає другий параметр цієї функції. З клавіатури в динамічну пам’ять занести послідовність структур з полями <Числовий код>, <Повідомлення>, виділивши окрему ділянку для кожної структури. Відсортувати введені записи в порядку зростання кодів. Результат сортування надрукувати у формі таблиці. Наприкінці визначити кількість записів, у кодах яких цифра 5 зустрічається понад два рази, й вказати їхні номери. У програмі створити й застосувати функцію, яка перевіряє скільки разів у заданому довгому цілому числі зустрічається певна цифра. У динамічну пам’ять занести набір введених з клавіатури рядків, кожен з яких містить прізвище та ім’я студента (ознака завершення введення – порожній рядок). Визначити й надрукувати найбільш поширене серед студентів жіноче ім’я. У програмі створити й використати дві функції: 1) для виділення імені (останнього слова) зі заданого символьного рядка; 2) для визначеня, чи це жіноче ім’я (підказка: можна вважати, що всі жіночі імена, закінчуються літерами а або я  , виняток становить ім’я Любов ). У динамічній пам’яті виділити місце для збереження вектора цілих чисел заданої довжини. Заповнити цей вектор випадковими трицифровими числами, в кожному з яких усі три цифри різні. Серед елементів вектора не повинно бути однакових. Відсортувати згенерований вектор у порядку зростання значень елементів і надрукувати його. У програмі створити й застосувати дві функції: 1) для перевірки цифр заданого трицифрового числа; 2) для перевірки, чи входить у масив заданої довжини вказане ціле число. У динамічну пам’ять занести послідовність введених з клавіатури символьних рядків (ознака завершення– введення цифри замість речення). Надрукувати ті з введених рядків, в яких заданана ключова послідовність символів повторюється не менше трьох разів. У програмі створити й застосувати функцію, яка перевіряє, скільки разів у символьному рядку зустрічається задана комбінація символів (без огляду на регістри літер). У динамічній пам’яті виділити місце для RC символьних рядків, кожен з яких буде складатися із десяткових цифр 9-розрядного випадкового цілого числа. Заповнити всі рядки 9-розрядними випадковими числами та надрукувати їх. Потім переставити числові рядки так, щоб значення чисел утворювали спадну послідовність. Надрукувати відсортовані числа. У програмі створити й використати три функції: 1) для формування символьного рядка з десяткових цифр 9-розрядного цілого випадкового числа (підказка: число сформувати з трьох випадкових трирозрядних чисел); 2) для сортування чисел (символьних рядків) у спадному порядку; 3) для виведення на екран набору символьних рядків. У динамічну пам’ять занести послідовність введених з клавіатури українських речень (ознака завершення введення – порожній рядок). Випадковим чином вибрати з введеного тексту два речення та надрукувати ці речення великими літерами. У програмі створити й використати функцію, яка виводить на екран великими літерами задане україномовне речення. Підказка: у функції скористатись масивами великих і малих літер української абетки. Лабораторна робота № 11 Тема роботи: Динамічні списки. Мета роботи: Оволодіти практичними прийомами створення, опрацювання та використання динамічних списків різної конфігурації. Методичні вказівки: 1. Алгоритм реалізації кожного із завдань даної лабораторної роботи повинен включати такі основні кроки: зі заданих вхідних даних у динамічній пам’яті сформувати список вказаної конфігурації; надрукувати створений список; виконати над елементами списку перетворення, вказані в індивідуальному завданні; надрукувати отриманий список (або списки); звільнити всю зайняту динамічну пам’ять. У програмі треба реалізувати вказану в завданні функцію, а також розробити власні функції для виконання операцій над елементами списку, зокрема: для доповнення списку новим елементом, роздруку списку, пошуку і/або вилучення заданого елемента, виконання необхідних обчислень або перетворень елементів списку, витирання всього списку та інші. Дані, з яких формується список, мають бути введені з клавіатури чи згенеровані програмно. У разі введенння даних з клавіатури слід встановити певну ознаку завершення введення, наприклад, введення порожнього рядка чи від’ємного числа тощо. Кожне введене (згенероване) дане треба відразу занести в динамічний список з урахуванням організації цього списку: одно- чи двозв’язний, стек, черга чи кільцевий, впорядкований чи невпорядкований. Якщо в завданні передбачено відокремлене збереження даних у динамічній пам’яті, то в елемент списку заноситься тільки адреса ділянки пам’яті, де розташовані дані. У разі доповнення списку новими елементами або вилучення певних елементів слід дуже уважно перемикати зв’язки, щоб зберегти загальну зв’язаність списку. Якщо дані списку записані в динамічній пам’яті окремо, то для вилучення такого елемента треба спочатку звільнити пам’ять, зайняту даними, а вже потім витерти відповідний елемент списку. Наприкінці роботи програми треба обовязково витерти всі створені списки, звільнивши повністю попередньо виділену динамічну пам’ять. Література: [1] . . [6]  , [14] . . [18]  . Варіанти індивідуальних завдань З клавіатури ввести послідовність дійсних чисел, впорядкованих за спаданням значень. Сформувати з введених чисел список, організований як черга. Потім ввести з клавіатури ще два дійсних числа і вставити їх у список, так, щоб зберегти загальну впорядкованість. Розробити окрему функцію, яка вводить у впорядкований однозв’язний список два нових елементи. У двозв’язний список занести послідовність структур з полями <Дата > та <Подія>. Поле <Дата> має бути символьним рядком, що складається з трьох частин: День.Місяць.Рік. Створити новий список, організований як стек, в який переписати введену інформацію у хронологічному порядку. Розробити окрему функцію для порівняння двох дат. Підказка: при створенні нового списку початковий список поелементно витирається. З введених речень сформувати двозв’язний список (у списку мають зберігатися тільки адреси речень, а самі речення треба розташувати в пам’яті окремо). Вилучити зі списку всі елементи, у реченнях яких є слова, що починаються і закінчуються однаковою літерою (великі й малі літери не розрізняти). Використати спеціальну функцію для перевірки слів речення. У список, організований як стек, занести послідовність символьних рядків, що містять двійкові коди беззнакових цілих чисел. На основі функції, яка перевіряє, чи заданий символьний рядок є правильним записом двійкового коду числа, і повертає десяткове числове значення цього числа (або нуль, якщо код неправильний), вилучити зі списку всі помилкові рядки. Потім надрукувати таблицю двійкових кодів, що залишились, та їхніх десяткових значень. Послідовно згенерувати N випадкових семицифрових чисел і сформувати з них двозв’язний список. Потім перенести згенеровані числа в новий список, організований як черга, в якому вони мають бути розташовані у порядку спаданням значень. Підказка: при створенні нового списку початковий список поелементно витирається. Розробити окрему функцію, яка формує семицифрове випадкове число з двох частин: три- та чотирицифрових випадкових чисел. Введену послідовність даних з координатами ( x , y ) точок площини занести в двозв’язний список, організований як стек. Визначити пару точок, віддаль між якими найменша, і вилучити їх зі списку. Використати функцію, яка визначає віддаль між двома заданими точками площини. Введені українські речення занести в однозв’язний список, організований як черга (в списку слід зберігати тільки адреси, а самі речення розташувати в пам’яті окремо). Визначити речення, в якому використано найбільше різних літер української абетки. Зробити це речення першим у списку. Розробити функцію, яка визначає кількість різних українських літер, що використані в заданому символьному рядку. З введених довгих цілих чисел сформувати двозв’язний список-чергу. Роздрукувати створений список в оберненому порядку. Потім вилучити зі списку всі елементи, що містять числа, сума цифр яких перевищує 30, використовуючи окрему функцію для визначення суми цифр заданого довгого цілого числа. Вказати відсоток вилучених елементів. У список, організований як черга, занести послідовність введених з клавіатури рядків, кожен з яких містить прізвище та ініціали одного учасника конкурсу. Потім перенести введені дані в новий список, організований як стек, в якому вони мають бути записані в абетковому порядку. Розробити окрему функцію для порівняння прізвищ учасників. Підказка: при створенні нового списку початковий список поелементно витирається. З введених слів сформувати кільцевий однозв’язний список. Створити новий список, організований як стек, в який переписати всі слова, що складаються з тих самих літер, що й перше введене слово. Надрукувати скорочений базовий список та новостворений список або вивести повідомлення про відсутність таких слів із вказаних літер. Використати функцію, яка перевіряє, чи два задані символьні рядки складаються з однакових символів. З введених структур, що мають поля: <код товару>, <кількість>, сформувати список, організований як черга (в списку слід зберігати тільки адреси, а самі структури розташувати в пам’яті окремо). Вилучити зі списку всі дані про товари, в кодах яких крім цифр є літери, та вказати номери вилучених записів. Використати функцію для перевірки коду товару. У список, організований як черга занести послідовність символьних рядків, що містять 2-10-ві коди цілих беззнакових чисел. Вилучити зі списку рядки, в яких записані неправильні коди (наприклад: у рядку є інші символи, крім 0 та 1, значення тетради перевищує 9, кількість десяткових цифр більша за 5 тощо). Надрукувати таблицю кодів, що залишились, та їхніх десяткових значень. Для перевірки 2-10-го коду числа та обчислення його десяткового значення розробити дві окремі функції. Послідовність введених слів занести в двозв’язний список-чергу (в списку мають зберігатися тільки адреси, а самі слова треба розташувати в пам’яті окремо). Потім вилучити зі списку всі слова, які складаються з тих самх літер, що й перше слово. Використати функцію, яка перевіряє, чи два задані символьні рядки складаються з усіх однакових символів. Розробити функцію, яка формує символьний рядок, що складається з десяткових цифр 11-розрядного випадкового цілого числа (число сформувати з трьох випадкових чисел: двох чотирирозрядних і одного трирозрядного). Використовуючи розроблену функцію, створити список, організований як черга, з 50-ти таких символьних рядків (випадкових 11-розрядних чисел) і надрукувати його. Потім вилучити зі списку всі елементи, в числах яких є цифра 3. Послідовність введених з клавіатури слів занести в кільцевий однозв’язний список. Визначити слово, яке складається з найбільшої кількості різних літер. Надрукувати це слово та вилучити його зі списку. Використати функцію, яка визначає кількість різних літер, з яких складається заданий символьний рядок. З введених беззнакових цілих чисел сформувати список, організований як черга. Вилучити зі сформованого списку три останніх непарних числа. Розробити й застосувати функцію, яка витирає з однозв’язного списку останній елемент, що містить непарне число. З введених речень сформувати двозв’язний список-чергу (у списку мають зберігатися тільки адреси речень, а самі речення треба розташувати в пам’яті окремо). Утворити новий список, організований як стек, у який перенести ті речення, що складаються з чотирьох або більше слів. Надрукувати обидва списки. Використати додаткову функцію для підрахунку кількості слів у заданому реченні. Підказка: при створенні нового списку перенесені елементи початкового списку витираються. З клавіатури ввести певний вираз, у якому використовуються всі три види дужок: ( ), [ ] та { }. Перевірити, чи дужки у виразі розставлені правильно. Для цього треба посимвольно переглянути вираз: якщо зустрілась ліва дужка, то затести її у стек, якщо ж знайдено праву дужку, то треба визначити, чи вона парна до дужки, яка була занесена в стек останньою. Вираз вважається правильним, якщо в кінці перевірки стек порожній. Використати дві окремі функції: першу для визначення, чи даний символ є дужкою, а другу для порівняння на парність двох заданих дужок. З KR випадкових трицифрових чисел сформувати список, організований як стек. Потім створити новий двозв’язний список-чергу, в який переписати тільки парні числа, розташувавши їх у порядку спадання значень. Підказка: при створенні нового списку перенесені елементи початкового списку витираються. У список, організований як стек, занести послідовність символьних рядків, кожен з яких містить прізвище та ім’я одного спортсмена (у списку мають зберігатися тільки адреси рядків, а самі дані треба розташувати в пам’яті окремо). Створити два нові списки-черги: в перший переписати дані про спортсменів-чоловіків, а в другий – про спортсменів жіночої статі. При формуванні нових списків переносити тільки адреси рядків, не змінюючи їх розташування у динамічній пам’яті (базовий список при цьому поелементно витирається). Розробити функцію, яка виділяє ім’я (останнє слово) зі заданого символьного рядка та визначає: це чоловіче чи жіноче ім’я (підказка: можна вважати, що всі жіночі імена, закінчуються літерами а або я  ). У список, організований як стек, занести послідовність символьних рядків, кожен з яких має відповідати 16-му коду довгого цілого числа. Перевірити введені рядки – у рядку мають бути тільки символи 16-х цифр, кількість цифр не повинна перевищувати 8 тощо. Ті рядки, в яких записані коди з помилками, витерти, а правильні коди переписати в новий список-чергу. Для перевірки кодів використати окрему функцію. З клавіатури у двозв’язний список занести послідовність структур з полями <Індекс>, <Повідомлення> (в списку слід зберігати тільки адреси, а самі структури розташувати в пам’яті окремо). Утворити новий список, організований як стек, у який перенести введені записи, відсортувавши їх у порядку зростання індексів. При формуванні нового списку треба переносити тільки адреси структур, не змінюючи їх розташування у динамічній пам’яті, та витирати перенесені елементи початкового списку. З введених речень сформувати двозв’язний список, організований як стек (у списку мають зберігатися тільки адреси речень, а самі речення треба розташувати в пам’яті окремо). Розробити функцію, яка міняє у заданому символьному рядку всі слова, що містять вказану літеру на відповідну кількість символів *. Використовуючи розроблену функцію, “засекретити” всі слова з введених речень, в яких зустрічається задана літера. Речення, які не містять ні одного “засекреченого” слова, вилучити зі списку. У список, організований як черга, занести послідовність символьних рядків із датами поточного року, що мають форму: День Місяць. Розробити функцію, яка за заданою датою визначає порядковий номер дня року (наприклад, 23 лютого – 54-й день року). Використовуючи розроблену функцію, вилучити зі списку всі дати, які відповідають дням року від 180-го до 225-го. З послідовності довгих беззнакових чисел, відсортованих за спаданням значень, сформувати циклічний список. Розробити функцію, яка вводить у однозв’язний циклічний список новий елемент, зберігаючи загальну впорядкованість списку. На основі цієї функції доповнити початковий список чотирма новими числами. З введених структур, що мають поля: <Код виробника>, <Адреса підприємства>, сформувати список, організований як стек (в списку слід зберігати тільки адреси структур, а самі структури розташувати в пам’яті окремо). Потім перенести в новий список, організований як черга, дані про українських виробників (при створенні нового списку відповідні елементи початкового списку витираються). Розробити окрему функцію для перевірки адреси виробника. З клавіатури ввести набір довгих цілих чисел, впорядкованих за зростанням значень. Сформувати з введених чисел список, організований як стек. Потім послідовно ввести з клавіатури ще декілька чисел, вставляючи їх у список, так, щоб зберігалась загальна впорядкованість. Застосувати окрему функцію для введення у впорядкований однозв’язний список нового елемента. Введену послідовність даних з координатами ( x, y, z ) просторових точок занести в однозв’язний список, організований як черга. Потім створити новий список-стек, в який пернести всі дані, розташувавши їх у порядку спадання віддалі від початку координат. Підказка: при створенні нового списку перенесені елементи початкового списку витираються. Використати функцію, яка визначає віддаль заданої просторової точки від початку координат. З введених речень сформувати список-чергу (у списку мають зберігатися тільки адреси речень, а самі речення треба розташувати в пам’яті окремо). Потім вилучити зі списку всі елементи, у реченнях яких є слова, що містять задане буквосполучення (великі й малі літери не розрізняти). Використати спеціальну функцію для перевірки, чи входять у речення слова зі заданим буквосполученням. З введених довгих цілих чисел сформувати двозв’язний кільцевий список. Вилучити зі списку всі елементи, які більше, ніж у три рази перевищують значення найменшого елемента списку. Використати окрему функцію для визначення найменшого елемента списку. Лабораторна робота № 12 Тема роботи: Обмін інформацією з дисковими файлами, взаємодія з дисковою системою MS DOS. Мета роботи:  здобути практичні знання та оволодіти засобами високорівневого буферизованого обміну даними з файлами;  навчитись створювати, опрацьовувати, перейменовувати та видаляти дискові файли, використовуючи бібліотечні функції мови С. Методичні вказівки: 1. Уважно прочитати умову задачі. Якщо в задачі потрібно опрацювати файл, який вже існуює, то необхідно попередньо створити відповідний файл. Для створення текстових файлів можна скористатись засобами одного з текстових редакторів MS DOS, у тому числі вбудованим редактором середовища Borland C/C++. Бінарні файли треба створювати програмно. Створений файл (файли) найкраще записати у власний робочий каталог, з якого буде запускатись програма, та зробити його активним каталогом. В іншому разі необхідно вказувати повний або скорочений шлях до файла. Якщо в умові задачі не вказано ім’я файла чи спосіб формування імені, то доцільно надати користувачеві можливість задавати ім’я файла (чи імена файлів) у списку параметрів комадного рядка, зчитуючи ці імена через параметри функції main(). У програмі треба обовязково виконати перевірку: якщо в комадному рядку ім’я файла не вказано, то забезпечити можливість введення імені файла з клавіатури. Більшість задач вимагають редагування вмісту файла. Для цього слід реалізувати таку послідовність дій: відкрити файл, що має бути опрацьований, для читання; створити новий файл для запису; послідовно зчитувати інформацію з базового файла, видозмінювати її відповідно до умови задачі та записувати в новий файл; закрити обидва файли; якщо результат редагування має бути збережений у файлі з початковим іменем, то базовий файл треба витерти, а новостворений – перейменувати; можна не витирати базовий файл, а тільки змінити його ім’я чи розширення. Для опрацювання вмісту файла треба розробити відповідні функції. Зчитування інформації з файла та запис даних у файл реалізувати за допомогою бібліотечних функцій високорівневого буферизованого обміну даними. Якщо за умовою завдання потрібно створити бінарний файл, то в такий файл треба записувати внутрішні коди відповідних даних (переписати їх з оперативної пам’яті). Найкраще для цього скористатись стандартною функцією fwrite(), а для зчитування даних – функцією fread(). У разі запису в бінарний файл чи зчитування з файла даних, що мають тип int, можна використовувати також функції putw() та getw(). Робота програми має супроводжуватись виведенням на екран відповідних повідомлень, зокрема щодо введення імені файла чи вхідних даних, створення нового файла чи зміни імені базового файла тощо. Якщо програма редагує файл чи створює новий текстовий файл, то треба переглянути його і перевірити правильність заповнення. Якщо ж результатом роботи програми є бінарний файл, то для контролю правильності треба обов’язково роздрукувати вміст файла в зручній для читання формі. Література: [1] . . [11]  , [18]  . Варіанти індивідуальних завдань Задано текстовий файл, в якому крім словесної інформації є також цілі числа й дійсні числа, записані у формі з фіксованою крапкою. Треба замінити у файлі всі дійсні числа цілими, округливши їх до ближчого цілого значення. У програмі скористатись двома функціями: 1) для перевірки, чи задана лексема є дійсним числом; 2) для заміни дійсного числа округленим цілим (обидва числа задаються у формі символьного рядка). Розробити функцію, яка виконує заміну розширення імені файла на нове задане (параметр функції – ім’я файла з можливим вказанням шляху до нього). Задано файл з текстом С-програми. На основі розробленої функції створити новий файл з тим самим іменем і розширенням *.wcm. Скопіювати у цей файл текст програми, вилучивши з нього всі коментарі. Задано файл з текстом С-програми. У новий файл з іменем main-fun.c переписати тільки головну функцію даної програми. Підказка: пошук кінця функції доцільно виконати на основі балансу фігурних дужок {}. Попередньо у редакторі текстів створити файл з набором цілих десяткових чисел: додатних і від’ємних. Розробити функцію, яка формує символьний рядок, що відповідає двобайтному двійковому доповнювальному коду заданого цілого числа (найстарший розряд – знак числа). Використовуючи розроблену функцію, сформувати двійкові коди всіх чисел вхідного файла та записати їх у новий текстовий файл numb10-2.cnv (кожне число має займати один рядок). Розробити функцію, яка міняє у реченні всі слова, що містять задану комбінацію символів на відповідну кількість символів #. Використовуючи розроблену функцію, “заховати” у заданому текстовому файлі всі слова, що містять вказане буквосполучення. Задано файл з текстом С-програми. В окремий файл з іменем comments.c переписати всі коментарі з даної програми. У новому файлі після кожного коментаря має бути записаний порожній рядок. Попередньо засобами текстового редактора створити файл, у кожен рядок якого записати 2-10-й код цілого беззнакового числа (тетради мають бути відокремлені одним символом пробілу). Розробити функцію, яка обчислює десяткове значення 2-10-го числа, записаного у заданому символьному рядку. Використовуючи розроблену функцію, сформувати для кожного числа структуру з полями: <2-10-й код>, <10-е значення> і записати цю структуру в новий бінарний файл з іменем convert10.dat . Наприкінці роздрукувати вміст створеного файла. Розробити функцію, яка визначає кількість слів і складів у заданому символьному рядку (підказка: склади рахувати за голосними літерами). Використовуючи розроблену функцію, визначити середню кількість складів в одному слові заданого текстового файла. Чотири останні речення даного файла перенести в новий текстовий файл з іменем endpart.txt. Розробити функцію, яка перевіряє, чи серед цифр заданого цілого числа є непарні. Згенерувати 500 випадкових чотирицифрових чисел і занести їхні внутрішні двобайтні коди у бінарний файл. Застосувавши розроблену функцію для перевірки числа, вилучити з файла ті числа, які містять непарні цифри. Роздрукувати вміст скороченого файла та вказати, скільки чисел вилучено. У заданому файлі з текстом Pascal-програми обчислити загальну кількість операторів циклу. Використати окрему функцію для визначення, чи містить даний рядок програми оператор циклу (підказка: оператори циклу рахувати за відповідни
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!