Завдання

Contents

Завдання#

Узагальнене формулювання завдання до лабораторної роботи#

Завдання складається з двох частин:

  • програмування роботи з текстовим доступом до файлу;

  • програмування роботи з бінарним доступом до файлу.

Для обох програм повинно бути підготовлено вихідні файли:

  • для текстового файлу — не менше за 10 рядків;

  • для бінарного файлу — не менше за 10 структур, що відповідають конкретному варіанту.

Для роботи з файлами повинно бути розроблено меню, пункти якого реалізовано тільки за допомогою функцій. Пункти меню повинні бути такі:

  • створення нового файлу;

  • відкриття файлу;

  • перегляд файлу (перегортання вперед, назад, у кінець файлу, у початок файлу);

  • корекція файлу — дозапис, виправлення, видалення даних;

  • збереження файлу;

  • збереження файлу як…;

  • закриття файлу.

Меню можна доповнювати додатковими пунктами, залежно від варіанту. Імена файлів потрібно уводити за запитом із клавіатури.

Постановка другого завдання#

Додатково до вищевказаних вимог, програма повинна задовольняти такі:

  1. Для запису структури у файл та читання структури з файлу потрібно використовувати функції fread() та fwrite().

  2. Для видалення й додавання елементів у файл потрібно використовувати допоміжний файл.

  3. Запис не потрібно вилучати з файлу негайно, а тільки позначати як вилучений. У вікні для перегляду потрібно відображати або активні записи, або помічені як видалені, але не обидва типи записів одночасно. Поле структури — статус запису — може містити 0 (ознака активного запису) або 1 (ознака видаленого запису). Під час створення файлу в це поле потрібно записати 0, а під час видалення запису з файлу — 1.

  4. Повинно бути передбачено можливість відновлення видаленого запису зі списку видалених, але тільки до моменту одержання ущільненого файлу (див. нижче).

  5. Збереження файлу з даними потрібно виконувати у двох режимах — з ущільненням і без ущільнення. У першому випадку записи, помічені як видалені, викидають, у другому випадку у файл записують усі записи зі збереженням їхнього статусу.

  6. Узаємодію з файлом даних потрібно здійснювати в бінарному режимі, тобто записи потрібно зберігати як образ в основній пам’яті комп’ютера.

Варіанти завдань до лабораторної роботи#

Робота з текстовими файлами (рядкове уведення-виведення)#

Варіант №1#

  1. Скопіювати у файл F2 парні рядки з F1.

  2. Підрахувати розмір файлів F1 і F2 (у байтах).

Варіант №2#

  1. Скопіювати у файл F2 рядки з F1, що починаються з літери 'А'.

  2. Підрахувати кількість слів в F2.

Варіант №3#

  1. Скопіювати у файл F2 рядки з F1, що починаються й закінчуються на одну й ту саму літеру.

  2. Підрахувати кількість символів в F2.

Варіант №4#

  1. Скопіювати у файл F2 рядки з F1, починаючи з n-ого.

  2. Підрахувати кількість символів в останньому слові F2.

Варіант №5#

  1. Скопіювати у файл F2 рядки з F1, починаючи з k-ого до (k+5)-ого.

  2. Підрахувати кількість голосних букв у файлі F2.

Варіант №6#

  1. Скопіювати у файл F2 рядки з F1 з k-ого до n-ого.

  2. Підрахувати кількість приголосних букв у файлі F2.

Варіант №7#

  1. Скопіювати у файл F2 рядки з F1, крім тих, що починаються з літери 'А'.

  2. Підрахувати кількість символів у першому слові F2.

Варіант №8#

  1. Скопіювати у файл F2 рядки з F1, що не містять цифер.

  2. Підрахувати кількість рядків у файлі F2, які починаються з літери 'А'.

Варіант №9#

  1. Скопіювати у файл F2 рядки з F1, що містять одне слово.

  2. Знайти найдовше слово у файлі F2.

Варіант №10#

  1. Скопіювати у файл F2 рядки з F1, що не містять слів, які починаються з однієї літери.

  2. Знайти найкоротше слово у файлі F2.

Варіант №11#

  1. Скопіювати у файл F2 рядки з F1, у яких міститься тільки одне слово.

  2. Визначити номер слова у файлі F2, у якому найбільше приголосних.

Варіант №12#

  1. Скопіювати у файл F2 рядки з F1, крім того, у якому найбільше голосних.

  2. Надрукувати номер цього рядка.

Варіант №13#

  1. Скопіювати у файл F2 рядки з F1, що починаються з літери 'А' й розташовані між рядками з номерами n1 і n2.

  2. Визначити номер рядка файлу F2, у якому найбільше приголосних.

Варіант №14#

  1. Скопіювати у файл F2 рядки з F1, що не містять літери 'А' й розташовані між рядками з номерами n1 і n2.

  2. Визначити номер рядка файлу F2, у якому найбільше голосних.

Варіант №15#

  1. Скопіювати у файл F2 рядки з F1, що закінчуються на літеру 'А' й розташовані між рядками з номерами n1 і n2.

  2. Визначити номер рядка файлу F2, у якому найбільше літер 'А'.

Варіант №16#

  1. Скопіювати у файл F2 рядки з F1, що починаються з літери 'А' й закінчуються на літеру 'C', розташовані між рядками з номерами n1 і n2.

  2. Визначити кількість слів у першому рядку файлу F2.

Варіант №17#

  1. Скопіювати у файл F2 рядки з F1, що починаються з літери 'А' й розташовані між рядками з номерами n1 і n2, а потім усі рядки від (n2 + 3)-го й до останнього.

  2. Визначити кількість слів в останньому рядку файлу F2.

Варіант №18#

  1. Скопіювати у файл F2 рядки з F1, у яких немає однакових слів.

  2. Визначити кількість голосних у першому рядку файлу F2.

Варіант №19#

  1. Скопіювати у файл F2 рядки з F1, у яких немає слів, що збігаються з першим словом.

  2. Визначити кількість приголосних у першому рядку файлу F2.

Варіант №20#

  1. Скопіювати у файл F2 рядки з F1, у яких є однакові слова.

  2. Визначити кількість голосних в останньому рядку файлу F2.

Варіант №21#

  1. Здійснити шифрування / дешифрування інформації у файлі F1 методом зсуву коду: до коду кожного символу, що зчитується, додається фіксований зсув.

  2. Результат криптографічної операції зберегти у файлі F2.

Варіант №22#

  1. Здійснити шифрування / дешифрування інформації у файлі F1 методом решітки - символи записуються з файлу в матрицю порядку n в одному напрямку, а зчитуються в іншому.

  2. Результат криптографічної операції зберегти у файлі F2.

Варіант №23#

  1. У файлі F1, який містить певний текст, у кожній фразі знайти найдовше слово і записати його у файл F2 в окремий рядок.

  2. Визначити номер рядку файлу F2, у якому слово складається тільки з голосних букв.

Варіант №24#

  1. У файлі F1, який містить певний текст, після кожної фрази в дужках вказати число слів в ній і записати його у файл F2.

  2. Визначити номер рядку файлу F2, у якому є слова, що складаються тільки з цифр.

Варіант №25#

  1. Файл F1, який містить певний текст, переписати у файл F2 по дві фрази на рядок. Якщо число фраз непарне, то у останньому рядку залишиться одна фраза.

  2. Визначити найдовший рядок у файлі F2.

Варіант №26#

  1. Файл F1 містить певний текст. Створити новий файл F2, кожен рядок якого виходить з відповідного рядка вихідного файлу F1 перестановкою слів в зворотному порядку.

  2. Знайти рядок у файлі F2, в якому перше слово найкоротше.

Варіант №27#

  1. Два текстові файли F1 і F2 містять цілі числа. Створити файли F3 і F4 з різних чисел, які містяться:

    • в кожному вихідному файлі;

    • тільки в одному з двох вихідних файлів.

  2. Підрахувати кількість чисел в обох випадках.

Варіант №28#

  1. Текстовий файл F1 містить статистику відвідування сайту за тиждень. Кожен рядок містить IP-адресу, час і назву дня тижня (наприклад, 139.18.150.126 23:12:44 sunday). Створити новий текстовий файл F2, який би містив список IP без повторень з першого файлу.

  2. Для кожного IP вказати кількість відвідувань на тиждень, найбільш популярний день тижня. .

Варіант №29#

  1. Два текстові файли F1 і F2 містять цілі числа. Створити файли F3 і F4 з різних чисел, які містяться:

    • тільки в першому вихідному файлі;

    • тільки в другому вихідному файлі.

  2. Підрахувати кількість чисел в обох випадках.

Варіант №30#

  1. Файл F1 містить негативні і позитивні числа. Переписати позитивні числа в файл F2, а негативні в файл F3.

  2. Підрахувати кількість чисел в кожному файлі.

Робота з бінарними файлами (блокове уведення-виведення)#

Варіант №1#

  1. Структура «Держава»:

    • назва;

    • столиця;

    • чисельність населення;

    • займана площа;

    • статус запису.

  2. Видалити всі елементи, у яких чисельність менша від заданої.

  3. Додати елемент після елемента з указаним номером.

Варіант №2#

  1. Структура «Людина»:

    • прізвище, ім’я, по батькові;

    • домашня адреса;

    • номер телефону;

    • вік;

    • статус запису.

  2. Видалити всі елементи з заданим віком.

  3. Додати елемент після елемента з заданим номером.

Варіант №3#

  1. Структура «Покупець»:

    • прізвище, ім’я, по батькові;

    • домашня адреса;

    • номер телефону;

    • номер кредитної картки;

    • статус запису.

  2. Видалити три елементи з початку файлу.

  3. Додати три елементи в кінець файлу.

Варіант №4#

  1. Структура «Пацієнт»:

    • прізвище, ім’я, по батькові;

    • домашня адреса;

    • номер медичної картки;

    • статус запису.

  2. Видалити елемент із заданим номером медичної картки.

  3. Додати два елементи в початок файлу.

Варіант №5#

  1. Структура «Відеокасета»:

    • назва фільму;

    • режисер;

    • тривалість;

    • ціна;

    • статус запису.

  2. Видалити всі елементи з ціною, вищою від заданої.

  3. Додати три елементи в кінець файлу.

Варіант №6#

  1. Структура «Абітурієнт»:

    • прізвище, ім’я, по батькові;

    • рік народження;

    • оцінки вступних іспитів (три штуки);

    • середній бал атестата;

    • статус запису.

  2. Видалити елемент із зазначеним номером.

  3. Додати елемент після елемента з указаним прізвищем.

Варіант №7#

  1. Структура «Працівник»:

    • прізвище, ім’я, по батькові;

    • посада;

    • рік народження;

    • заробітна платня;

    • статус запису.

  2. Видалити елемент з указаним прізвищем.

  3. Додати елемент після елемента з указаним номером.

Варіант №8#

  1. Структура «Людина»:

    • прізвище, ім’я, по батькові;

    • рік народження;

    • зріст;

    • вага;

    • статус запису.

  2. Видалити всі елементи з зазначеними зростом і вагою.

  3. Додати елемент після елемента з указаним прізвищем.

Варіант №9#

  1. Структура «Школяр»:

    • прізвище, ім’я, по батькові;

    • клас;

    • номер телефону;

    • оцінки з предметів (математика, фізика, українська література);

    • статус запису.

  2. Видалити всі елементи, у яких є «двійка» хоча б з одного предмету.

  3. Додати елемент у початок файлу.

Варіант №10#

  1. Структура «Музичний диск»:

    • назва;

    • автор;

    • тривалість;

    • ціна;

    • статус запису.

  2. Видалити перший елемент із заданою тривалістю.

  3. Додати два елементи після елемента з заданим номером.

Варіант №11#

  1. Структура «Спортивна команда»:

    • назва;

    • місто;

    • кількість гравців;

    • кількість набраних балів;

    • статус запису.

  2. Видалити всі елементи з кількістю балів, меншою від заданої.

  3. Додати два елементи в початок файлу.

Варіант №12#

  1. Структура «Автомобіль»:

    • марка;

    • рік випуску;

    • ціна;

    • колір;

    • статус запису.

  2. Видалити всі елементи, у яких рік випуску менший від заданого.

  3. Додати елемент у початок файлу.

Варіант №13#

  1. Структура «Фільм»:

    • назва;

    • режисер;

    • рік випуску;

    • вартість;

    • статус запису.

  2. Видалити всі елементи, у яких вартість перевищує задану.

  3. Додати елемент у початок файлу.

Варіант №14#

  1. Структура «Книжка»:

    • назва;

    • автор;

    • рік видання;

    • кількість сторінок;

    • статус запису.

  2. Видалити три елементи з початку файлу.

  3. Додати елемент перед елементом з указаною назвою.

Варіант №15#

  1. Структура «Держава»:

    • назва;

    • державна мова;

    • грошова одиниця;

    • курс валюти відносно долару;

    • статус запису.

  2. Видалити елемент з указаною назвою.

  3. Додати два елементи в кінець файлу.

Варіант №16#

  1. Структура «Студент»:

    • прізвище, ім’я, по батькові;

    • дата народження;

    • домашня адреса;

    • рейтинг;

    • статус запису.

  2. Видалити елементи, у яких дати народження збігаються.

  3. Додати елемент перед елементом із заданим прізвищем.

Варіант №17#

  1. Структура «Власник автомобіля»:

    • прізвище, ім’я, по батькові;

    • номер автомобіля;

    • номер техпаспорта;

    • відділок реєстрації;

    • статус запису.

  2. Видалити елемент із заданим номером.

  3. Додати два елементи перед елементом із заданим прізвищем.

Варіант №18#

  1. Структура «Власник автомобіля»:

    • прізвище, ім’я, по батькові;

    • номер автомобіля;

    • телефон;

    • номер техпаспорта;

    • статус запису.

  2. Видалити елемент із заданим номером техпаспорта.

  3. Додати два елементи після елемента з заданим прізвищем.

Варіант №19#

  1. Структура «Автомобіль»:

    • марка;

    • серійний номер;

    • реєстраційний номер;

    • рік випуску;

    • статус запису.

  2. Видалити три елементи з початку файлу.

  3. Додати елемент після елемента з указаним реєстраційним номером.

Варіант №20#

  1. Структура «Інформація»:

    • носій;

    • обсяг;

    • назва;

    • автор;

    • статус запису.

  2. Видалити перший елемент із заданим обсягом інформації.

  3. Додати елемент перед елементом із зазначеним номером.

Варіант №21#

  1. Структура «Архітектурні пам’ятники»:

    • назва;

    • місце розташування;

    • тип будівлі;

    • архитектор;

    • рік будівництва.

    • статус запису.

  2. Вивести відомості про споруди певного типу, наприклад, «собор», які побудовані до 18 століття. Знайти найдавніший архітектурний пам’ятник.

  3. Додати елемент перед елементом з указаною назвою.

Варіант №22#

  1. Структура «Багаж пасажира»:

    • прізвище, ім’я, по батькові пасажира;

    • кількість речей;

    • загальна вага речей;

    • статус запису.

  2. Видалити всі елементи з зазначеною вагою.

  3. Додати 2 елемента після елемента з указаним прізвищем.

Варіант №23#

  1. Структура «Багаж пасажира»:

    • прізвище, ім’я, по батькові пасажира;

    • кількість речей;

    • загальна вага речей;

    • статус запису.

  2. Визначити, чи є два пасажира, багажі яких збігаються за кількістю речей і розрізняються за вагою не більше ніж на 0,5 кг.

  3. Додати в кінець списку 2 елементи.

Варіант №24#

  1. Структура «Багаж пасажира»:

    • прізвище, ім’я, по батькові пасажира;

    • кількість речей;

    • загальна вага речей;

    • статус запису.

  2. З’ясувати, чи є пасажир, багаж якого складається з однієї речі вагою менше 30 кг.

  3. Додати два елементи перед елементом із заданим прізвищем.

Варіант №25#

  1. Структура «Картотека в бюро обміну квартир»:

    • кількість кімнат;

    • етаж;

    • площа;

    • адреса;

    • статус запису.

  2. Пошук в картотеці відповідного варіанту для обміну за однакової кількості кількості кімнат і поверху і відмінності площ в межах 10%.

  3. Вивести відповідну картку і видалити зі списку, в іншому випадку, заявку що надійшла, включити в список.

Варіант №26#

  1. Структура «Ювелірні вироби»:

    • найменування;

    • ціна;

    • метал;

    • камені;

    • номер за каталогом;

  2. статус запису.

  3. Знайти однакові вироби за найменуванням. Видалити більш дешевий екземпляр.

  4. Розмістити на місце видаленого екземпляру Новий вироб нового найменування.

Варіант №27#

  1. Структура «Кубики»:

    • розмір кубика (довжина ребра у сантіметрах);

    • його колір (червоний, зелений, жовтий або синій);

    • матеріал (дерев’яний, металевий, картонний);

    • статус запису.

  2. Знайти кількість кубиків кожного з перерахованих квітів і їх сумарний обсяг.

  3. Видалити кубики такого кольору, чий обсяг менше.

Варіант №28#

  1. Структура «Кубики»:

    • розмір кубика (довжина ребра у сантіметрах);

    • його колір (червоний, зелений, жовтий або синій);

    • матеріал (дерев’яний, металевий, картонний);

    • статус запису.

  2. Знайти кількість дерев’яних кубиків з ребром 3 см і кількість металевих кубиків з ребром, більшим 5 см.

  3. Додати два кубика на початок списку.

Варіант №29#

  1. Структура «Клуб однофамільців»:

    • прізвище;

    • ім’я;

    • стать;

    • телефон;

    • статус запису.

  2. Враховуючи, що серед представлених персон чимало однофамільців, упорядкувати список за незростанням кількості однофамільців.

  3. Додати нову персону з прізвищем, що рідше всіх зустрічається в списку.

Варіант №30#

  1. Структура «Склад виробів»:

    • номер виробу;

    • найменування виробу;

    • кількість виробів;

    • ціна 1 виробу;

    • статус запису.

  2. Видати список всіх виробів c номерами в заданому інтервалі.

  3. Знайти вироби з найбільшою та найменшою ціною і поміняти їх місцями.