Завдання#
Узагальнене формулювання завдання до лабораторної роботи#
Завдання складається з двох частин:
програмування роботи з текстовим доступом до файлу;
програмування роботи з бінарним доступом до файлу.
Для обох програм повинно бути підготовлено вихідні файли:
для текстового файлу — не менше за 10 рядків;
для бінарного файлу — не менше за 10 структур, що відповідають конкретному варіанту.
Для роботи з файлами повинно бути розроблено меню, пункти якого реалізовано тільки за допомогою функцій. Пункти меню повинні бути такі:
створення нового файлу;
відкриття файлу;
перегляд файлу (перегортання вперед, назад, у кінець файлу, у початок файлу);
корекція файлу — дозапис, виправлення, видалення даних;
збереження файлу;
збереження файлу як…;
закриття файлу.
Меню можна доповнювати додатковими пунктами, залежно від варіанту. Імена файлів потрібно уводити за запитом із клавіатури.
Постановка другого завдання#
Додатково до вищевказаних вимог, програма повинна задовольняти такі:
Для запису структури у файл та читання структури з файлу потрібно використовувати функції
fread()
таfwrite()
.Для видалення й додавання елементів у файл потрібно використовувати допоміжний файл.
Запис не потрібно вилучати з файлу негайно, а тільки позначати як вилучений. У вікні для перегляду потрібно відображати або активні записи, або помічені як видалені, але не обидва типи записів одночасно. Поле структури — статус запису — може містити 0 (ознака активного запису) або 1 (ознака видаленого запису). Під час створення файлу в це поле потрібно записати 0, а під час видалення запису з файлу — 1.
Повинно бути передбачено можливість відновлення видаленого запису зі списку видалених, але тільки до моменту одержання ущільненого файлу (див. нижче).
Збереження файлу з даними потрібно виконувати у двох режимах — з ущільненням і без ущільнення. У першому випадку записи, помічені як видалені, викидають, у другому випадку у файл записують усі записи зі збереженням їхнього статусу.
Узаємодію з файлом даних потрібно здійснювати в бінарному режимі, тобто записи потрібно зберігати як образ в основній пам’яті комп’ютера.
Варіанти завдань до лабораторної роботи#
Робота з текстовими файлами (рядкове уведення-виведення)#
Варіант №1#
Скопіювати у файл
F2
парні рядки зF1
.Підрахувати розмір файлів
F1
іF2
(у байтах).
Варіант №2#
Скопіювати у файл
F2
рядки зF1
, що починаються з літери'А'
.Підрахувати кількість слів в
F2
.
Варіант №3#
Скопіювати у файл
F2
рядки зF1
, що починаються й закінчуються на одну й ту саму літеру.Підрахувати кількість символів в
F2
.
Варіант №4#
Скопіювати у файл
F2
рядки зF1
, починаючи зn
-ого.Підрахувати кількість символів в останньому слові
F2
.
Варіант №5#
Скопіювати у файл
F2
рядки зF1
, починаючи зk
-ого до(k+5)
-ого.Підрахувати кількість голосних букв у файлі
F2
.
Варіант №6#
Скопіювати у файл
F2
рядки зF1
з k-ого до n-ого.Підрахувати кількість приголосних букв у файлі
F2
.
Варіант №7#
Скопіювати у файл
F2
рядки зF1
, крім тих, що починаються з літери'А'
.Підрахувати кількість символів у першому слові
F2
.
Варіант №8#
Скопіювати у файл
F2
рядки зF1
, що не містять цифер.Підрахувати кількість рядків у файлі
F2
, які починаються з літери'А'
.
Варіант №9#
Скопіювати у файл
F2
рядки зF1
, що містять одне слово.Знайти найдовше слово у файлі
F2
.
Варіант №10#
Скопіювати у файл
F2
рядки зF1
, що не містять слів, які починаються з однієї літери.Знайти найкоротше слово у файлі
F2
.
Варіант №11#
Скопіювати у файл
F2
рядки зF1
, у яких міститься тільки одне слово.Визначити номер слова у файлі
F2
, у якому найбільше приголосних.
Варіант №12#
Скопіювати у файл
F2
рядки зF1
, крім того, у якому найбільше голосних.Надрукувати номер цього рядка.
Варіант №13#
Скопіювати у файл
F2
рядки зF1
, що починаються з літери'А'
й розташовані між рядками з номерамиn1
іn2
.Визначити номер рядка файлу
F2
, у якому найбільше приголосних.
Варіант №14#
Скопіювати у файл
F2
рядки зF1
, що не містять літери'А'
й розташовані між рядками з номерамиn1
іn2
.Визначити номер рядка файлу
F2
, у якому найбільше голосних.
Варіант №15#
Скопіювати у файл
F2
рядки зF1
, що закінчуються на літеру'А'
й розташовані між рядками з номерамиn1
іn2
.Визначити номер рядка файлу
F2
, у якому найбільше літер'А'
.
Варіант №16#
Скопіювати у файл
F2
рядки зF1
, що починаються з літери'А'
й закінчуються на літеру'C'
, розташовані між рядками з номерамиn1
іn2
.Визначити кількість слів у першому рядку файлу
F2
.
Варіант №17#
Скопіювати у файл
F2
рядки зF1
, що починаються з літери'А'
й розташовані між рядками з номерамиn1
іn2
, а потім усі рядки від(n2 + 3)
-го й до останнього.Визначити кількість слів в останньому рядку файлу
F2
.
Варіант №18#
Скопіювати у файл
F2
рядки зF1
, у яких немає однакових слів.Визначити кількість голосних у першому рядку файлу
F2
.
Варіант №19#
Скопіювати у файл
F2
рядки зF1
, у яких немає слів, що збігаються з першим словом.Визначити кількість приголосних у першому рядку файлу
F2
.
Варіант №20#
Скопіювати у файл
F2
рядки зF1
, у яких є однакові слова.Визначити кількість голосних в останньому рядку файлу
F2
.
Варіант №21#
Здійснити шифрування / дешифрування інформації у файлі
F1
методом зсуву коду: до коду кожного символу, що зчитується, додається фіксований зсув.Результат криптографічної операції зберегти у файлі
F2
.
Варіант №22#
Здійснити шифрування / дешифрування інформації у файлі
F1
методом решітки - символи записуються з файлу в матрицю порядкуn
в одному напрямку, а зчитуються в іншому.Результат криптографічної операції зберегти у файлі
F2
.
Варіант №23#
У файлі
F1
, який містить певний текст, у кожній фразі знайти найдовше слово і записати його у файлF2
в окремий рядок.Визначити номер рядку файлу
F2
, у якому слово складається тільки з голосних букв.
Варіант №24#
У файлі
F1
, який містить певний текст, після кожної фрази в дужках вказати число слів в ній і записати його у файлF2
.Визначити номер рядку файлу
F2
, у якому є слова, що складаються тільки з цифр.
Варіант №25#
Файл
F1
, який містить певний текст, переписати у файлF2
по дві фрази на рядок. Якщо число фраз непарне, то у останньому рядку залишиться одна фраза.Визначити найдовший рядок у файлі
F2
.
Варіант №26#
Файл
F1
містить певний текст. Створити новий файлF2
, кожен рядок якого виходить з відповідного рядка вихідного файлуF1
перестановкою слів в зворотному порядку.Знайти рядок у файлі
F2
, в якому перше слово найкоротше.
Варіант №27#
Два текстові файли
F1
іF2
містять цілі числа. Створити файлиF3
іF4
з різних чисел, які містяться:в кожному вихідному файлі;
тільки в одному з двох вихідних файлів.
Підрахувати кількість чисел в обох випадках.
Варіант №28#
Текстовий файл
F1
містить статистику відвідування сайту за тиждень. Кожен рядок містить IP-адресу, час і назву дня тижня (наприклад,139.18.150.126 23:12:44 sunday
). Створити новий текстовий файлF2
, який би містив список IP без повторень з першого файлу.Для кожного IP вказати кількість відвідувань на тиждень, найбільш популярний день тижня. .
Варіант №29#
Два текстові файли
F1
іF2
містять цілі числа. Створити файлиF3
іF4
з різних чисел, які містяться:тільки в першому вихідному файлі;
тільки в другому вихідному файлі.
Підрахувати кількість чисел в обох випадках.
Варіант №30#
Файл
F1
містить негативні і позитивні числа. Переписати позитивні числа в файлF2
, а негативні в файлF3
.Підрахувати кількість чисел в кожному файлі.
Робота з бінарними файлами (блокове уведення-виведення)#
Варіант №1#
Структура «Держава»:
назва;
столиця;
чисельність населення;
займана площа;
статус запису.
Видалити всі елементи, у яких чисельність менша від заданої.
Додати елемент після елемента з указаним номером.
Варіант №2#
Структура «Людина»:
прізвище, ім’я, по батькові;
домашня адреса;
номер телефону;
вік;
статус запису.
Видалити всі елементи з заданим віком.
Додати елемент після елемента з заданим номером.
Варіант №3#
Структура «Покупець»:
прізвище, ім’я, по батькові;
домашня адреса;
номер телефону;
номер кредитної картки;
статус запису.
Видалити три елементи з початку файлу.
Додати три елементи в кінець файлу.
Варіант №4#
Структура «Пацієнт»:
прізвище, ім’я, по батькові;
домашня адреса;
номер медичної картки;
статус запису.
Видалити елемент із заданим номером медичної картки.
Додати два елементи в початок файлу.
Варіант №5#
Структура «Відеокасета»:
назва фільму;
режисер;
тривалість;
ціна;
статус запису.
Видалити всі елементи з ціною, вищою від заданої.
Додати три елементи в кінець файлу.
Варіант №6#
Структура «Абітурієнт»:
прізвище, ім’я, по батькові;
рік народження;
оцінки вступних іспитів (три штуки);
середній бал атестата;
статус запису.
Видалити елемент із зазначеним номером.
Додати елемент після елемента з указаним прізвищем.
Варіант №7#
Структура «Працівник»:
прізвище, ім’я, по батькові;
посада;
рік народження;
заробітна платня;
статус запису.
Видалити елемент з указаним прізвищем.
Додати елемент після елемента з указаним номером.
Варіант №8#
Структура «Людина»:
прізвище, ім’я, по батькові;
рік народження;
зріст;
вага;
статус запису.
Видалити всі елементи з зазначеними зростом і вагою.
Додати елемент після елемента з указаним прізвищем.
Варіант №9#
Структура «Школяр»:
прізвище, ім’я, по батькові;
клас;
номер телефону;
оцінки з предметів (математика, фізика, українська література);
статус запису.
Видалити всі елементи, у яких є «двійка» хоча б з одного предмету.
Додати елемент у початок файлу.
Варіант №10#
Структура «Музичний диск»:
назва;
автор;
тривалість;
ціна;
статус запису.
Видалити перший елемент із заданою тривалістю.
Додати два елементи після елемента з заданим номером.
Варіант №11#
Структура «Спортивна команда»:
назва;
місто;
кількість гравців;
кількість набраних балів;
статус запису.
Видалити всі елементи з кількістю балів, меншою від заданої.
Додати два елементи в початок файлу.
Варіант №12#
Структура «Автомобіль»:
марка;
рік випуску;
ціна;
колір;
статус запису.
Видалити всі елементи, у яких рік випуску менший від заданого.
Додати елемент у початок файлу.
Варіант №13#
Структура «Фільм»:
назва;
режисер;
рік випуску;
вартість;
статус запису.
Видалити всі елементи, у яких вартість перевищує задану.
Додати елемент у початок файлу.
Варіант №14#
Структура «Книжка»:
назва;
автор;
рік видання;
кількість сторінок;
статус запису.
Видалити три елементи з початку файлу.
Додати елемент перед елементом з указаною назвою.
Варіант №15#
Структура «Держава»:
назва;
державна мова;
грошова одиниця;
курс валюти відносно долару;
статус запису.
Видалити елемент з указаною назвою.
Додати два елементи в кінець файлу.
Варіант №16#
Структура «Студент»:
прізвище, ім’я, по батькові;
дата народження;
домашня адреса;
рейтинг;
статус запису.
Видалити елементи, у яких дати народження збігаються.
Додати елемент перед елементом із заданим прізвищем.
Варіант №17#
Структура «Власник автомобіля»:
прізвище, ім’я, по батькові;
номер автомобіля;
номер техпаспорта;
відділок реєстрації;
статус запису.
Видалити елемент із заданим номером.
Додати два елементи перед елементом із заданим прізвищем.
Варіант №18#
Структура «Власник автомобіля»:
прізвище, ім’я, по батькові;
номер автомобіля;
телефон;
номер техпаспорта;
статус запису.
Видалити елемент із заданим номером техпаспорта.
Додати два елементи після елемента з заданим прізвищем.
Варіант №19#
Структура «Автомобіль»:
марка;
серійний номер;
реєстраційний номер;
рік випуску;
статус запису.
Видалити три елементи з початку файлу.
Додати елемент після елемента з указаним реєстраційним номером.
Варіант №20#
Структура «Інформація»:
носій;
обсяг;
назва;
автор;
статус запису.
Видалити перший елемент із заданим обсягом інформації.
Додати елемент перед елементом із зазначеним номером.
Варіант №21#
Структура «Архітектурні пам’ятники»:
назва;
місце розташування;
тип будівлі;
архитектор;
рік будівництва.
статус запису.
Вивести відомості про споруди певного типу, наприклад, «собор», які побудовані до 18 століття. Знайти найдавніший архітектурний пам’ятник.
Додати елемент перед елементом з указаною назвою.
Варіант №22#
Структура «Багаж пасажира»:
прізвище, ім’я, по батькові пасажира;
кількість речей;
загальна вага речей;
статус запису.
Видалити всі елементи з зазначеною вагою.
Додати 2 елемента після елемента з указаним прізвищем.
Варіант №23#
Структура «Багаж пасажира»:
прізвище, ім’я, по батькові пасажира;
кількість речей;
загальна вага речей;
статус запису.
Визначити, чи є два пасажира, багажі яких збігаються за кількістю речей і розрізняються за вагою не більше ніж на 0,5 кг.
Додати в кінець списку 2 елементи.
Варіант №24#
Структура «Багаж пасажира»:
прізвище, ім’я, по батькові пасажира;
кількість речей;
загальна вага речей;
статус запису.
З’ясувати, чи є пасажир, багаж якого складається з однієї речі вагою менше 30 кг.
Додати два елементи перед елементом із заданим прізвищем.
Варіант №25#
Структура «Картотека в бюро обміну квартир»:
кількість кімнат;
етаж;
площа;
адреса;
статус запису.
Пошук в картотеці відповідного варіанту для обміну за однакової кількості кількості кімнат і поверху і відмінності площ в межах 10%.
Вивести відповідну картку і видалити зі списку, в іншому випадку, заявку що надійшла, включити в список.
Варіант №26#
Структура «Ювелірні вироби»:
найменування;
ціна;
метал;
камені;
номер за каталогом;
статус запису.
Знайти однакові вироби за найменуванням. Видалити більш дешевий екземпляр.
Розмістити на місце видаленого екземпляру Новий вироб нового найменування.
Варіант №27#
Структура «Кубики»:
розмір кубика (довжина ребра у сантіметрах);
його колір (червоний, зелений, жовтий або синій);
матеріал (дерев’яний, металевий, картонний);
статус запису.
Знайти кількість кубиків кожного з перерахованих квітів і їх сумарний обсяг.
Видалити кубики такого кольору, чий обсяг менше.
Варіант №28#
Структура «Кубики»:
розмір кубика (довжина ребра у сантіметрах);
його колір (червоний, зелений, жовтий або синій);
матеріал (дерев’яний, металевий, картонний);
статус запису.
Знайти кількість дерев’яних кубиків з ребром 3 см і кількість металевих кубиків з ребром, більшим 5 см.
Додати два кубика на початок списку.
Варіант №29#
Структура «Клуб однофамільців»:
прізвище;
ім’я;
стать;
телефон;
статус запису.
Враховуючи, що серед представлених персон чимало однофамільців, упорядкувати список за незростанням кількості однофамільців.
Додати нову персону з прізвищем, що рідше всіх зустрічається в списку.
Варіант №30#
Структура «Склад виробів»:
номер виробу;
найменування виробу;
кількість виробів;
ціна 1 виробу;
статус запису.
Видати список всіх виробів c номерами в заданому інтервалі.
Знайти вироби з найбільшою та найменшою ціною і поміняти їх місцями.