
- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу
- •Специфікатори доступу
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Приклад виконання завдання 3
- •Приклад виконання завдання 4
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Структура наслідування класів
- •Постановка задачі
- •Розробити клас трикутника, чотирикутника, кола, точки
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання
- •Завдання 1
- •Завдання 2
- •Завдання 3 Варіант 1. Задача “Банківське переведення” (дата, час, № рахунку, розмір рахунку).
- •Ітератори
- •Для роботи з вектором необхідно:
- •Приклад роботи з вектором
- •Алгоритми
- •Застосування алгоритмів до вектора
- •Приклад 1 виконання Завдання 1
- •Приклад 2 виконання Завдання 2
- •Приклад 3 виконання завдання №3
- •Контрольні запитання
- •Завдання 1
- •Теоретичні відомості Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання
- •Завдання 2.
- •Теоретичні відомості
- •Стандартні потоки для базових класів
- •Форматування даних при обмінах з потоками
- •Маніпулятори
- •Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Лабораторна робота №14
Тема: Особливості розробки програм з використанням файлових потоків
Мета: Набуття навичок студентами в розробці потоків
Порядок виконання
Ознайомитись з теоретичною частиною даної теми.
Розробити ієрархію класів з використанням стандартної бібліотеки вводу/виводу С++ для організації та роботи з файловими потоками відповідно Завдання.
При розробці програм використовувати:
Бібліотечну функцію (з бібліотеки ANSIC) int create (const char* path, int mode);
Бібліотечну функцію void open (const char* File_Name, int mode=замовчуване значення, int protection=замовчуване значення);
Конструктори класів ifstream, ofstream, fstream.
Розробити тест для перевірки вірності даної програми.
Оформити звіт до лабораторної роботи.
Завдання
Варіант 1
Для збереження даних про планшетні сканери описати структуру виду:
struct scan_info{
char model[25]; // найменування моделі
int price; // ціна
double x_size; // гориз. розмір обл. сканування
double y_size; // вертик. розмір обл. сканування
int optr; // оптичне розрішення
int grey; // число градацій сірого
};
Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщується значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що витягає з цього файлу дані про сканер у структуру типу scan_info. Обов'язковий параметр — номер необхідного запису. Функція повинна повертати нульове значення, якщо читання пройшло успішно, і –1 у противному випадку.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) — 6–8 записів, і що виводить на дисплей дані про запис, на які був запит.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 2
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщується значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що сортує записи в описаному вище бінарному файлі по одній з наступних характеристик: ціна або число градацій сірого. Обов'язковий параметр — ознака, що задає критерій сортування.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює його сортування.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 3
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших чотирьох байтах розміщається значення типу long, що визначає кількість зроблених у файл записів; далі без пропусків розміщуються записи про сканери.
Написати функцію, що сортує записи в описаному вище бінарному файлі по найменуванню моделі сканера.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює його сортування.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 4
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що динамічно виділяє пам'ять під масив структур (не менше шести елементів), заповнює його даними в режимі діалогу і записує масив у бінарний файл. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що витягає дані про сканер з описаного вище бінарного файлу в структуру типу scan_info. Обов'язковий параметр — номер необхідного запису. Функція повинна повертати нульове значення, якщо читання пройшло успішно, і –1 у противному випадку.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює вивід на дисплей даних про необхідний запис.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 5
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що записує дані про сканер із приведеної структури в необхідну позицію в бінарному файлі. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Запис може здійснюватися в будь-яку позицію, причому якщо між записом, що вводиться, і останнім (чи початком файлу) наявні пропуски, вони заповнюються нулями.
Написати функцію, що «ущільнює» описаний вище бінарний файл шляхом видалення з нього записів, що містять усі нулі.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з шести записів і здійснює його ущільнення.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 6
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що динамічно виділяє пам'ять під масив структур (не менше шести елементів), заповнює його даними в режимі діалогу, і записує масив у бінарний файл. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що запитує дані про сканер у режимі діалогу і заміщає записи в бінарному файлі по заданому номеру. Обов'язковий параметр — номер запису, що заміщається. Функція повинна повертати нульове значення, якщо запис пройшов успішно, і –1 у противному випадку.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює вставку нових даних про сканер.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 7
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що вводить дані про сканер із клавіатури в структуру типу scan_info, і якщо дані про цей сканер відсутні у файлі, поміщає вміст структури в кінець файлу; у противному випадку видає відповідне повідомлення.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з текстового файлу) — 6–8 записів і доповнює файл записами по 2–3 сканерах, що вводяться з клавіатури.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 8
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Написати функцію, що вводить дані про сканер із клавіатури в структуру типу scan_info і поміщає її вміст на місце першого запису у файлі. Файл повинен існувати. При цьому, запис, який раніше займав першу позицію, ставиться на другу, другу на третю і т.д.
Привести приклад програми, що створює файл із даними про сканери (дані вводяться з текстового файлу) — 6–8 записів і доповнює цей файл 1–2 новими записами, що вводяться з клавіатури.
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається.
Варіант 9
Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1.
Написати функцію, що робить запит на кількість сканерів, інформація про які буде вводитися, динамічно виділяє пам'ять під масив структур відповідного розміру і заповнює його даними в режимі діалогу (із клавіатури). При цьому ім'я сканера може містити пробіли.
Написати функцію, що записує даний масив у створюваний бінарний файл. Якщо ціна сканера менше 200, то дані про цей сканер у файл не записуються. Інформація про інші сканери записується в бінарний файл, причому спочатку пишуться дані про всі сканери, ім'я яких починається з заголовної букви, а потім — із прописної.
Структура файлу: у перших чотирьох байтах розміщається значення типу long, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери.
Привести приклад програми, що створює файл із даними про сканери і здійснює вивід на дисплей даних про необхідний запис (або всіх, або по номері).
Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних перемінних у функціях не допускається
Варіант 10
Для збереження даних про ноутбук описати структуру виду:
struct NOTEBOOK{
char model[21]; // найменування
struct size{ // габаритні розміри
float x;
float y;
float z; };
float w; // вага
int price; // ціна
}
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у стуктуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється читання даних тільки для тих ноутбуків, частота процесора яких більше 120МГц, і запис у бінарний файл по зменшенню ціни.
Варіант 11
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється читання даних тільки для тих ноутбуків, обсяг HDD яких менше 1 Гб, і запис зчитаних даних у бінарний файл за абеткою по найменуванню.
Варіант 12
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, ціла кількість яких в одному кубічному метрі не перевищує 285-ти штук.
Варіант 13
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, максимальний обсяг ОЗП яких не менша 40Мб, відсортованих по обсягу.
Варіант 14
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10.
Написати функцію, що читає дані про ноутбуках з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, діагональ дисплея яких більше одинадцяти дюймів.
Варіант 15
Для збереження даних про ноутбук описати структуру виду:
struct NOTEBOOK{
struct disp_res{ // роздільна здатність дисплея
int x; // по горизонталі
int y; // по вертикалі
};
int f; // частота регенерації
float d; // розмір діагоналі дисплея
int price; // ціна
char model[21]; // найменування
}
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, вага яких менш 7кг, відсортованих у порядку зростання ціни.
Варіант 16
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15.
Написати функцію, що читає дані про ноутбуках з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, обсяг відеопам'яті яких 2Мб, відсортованих у порядку зменшення тактової частоти процесора.
Варіант 17
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, обсяг HDD яким більше 1Гб, відсортованих у порядку зростання розміру діагоналі дисплея.
Варіант 18
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, тактова частота процесора яких більше 120МГц, відсортованих у порядку зменшення ваги.
Варіант 19
Для збереження даних про ноутбук описати структуру виду:
struct NOTEBOOK{
struct disp_res{ //роздільна здатність дисплея
int x; // по горизонталі
int y; // по вертикалі
};
int f; // частота регенерації
float d; // розмір діагоналі дисплея
float hdd; // розмір диска
char model[21]; // найменування
}
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, тактова частота процесора яких більше 120МГц, відсортовані в порядку зростання ціни.
Варіант 20
Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 19.
Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK.
Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, ціна яких більше 3500$, відсортовані в порядку зростання тактової частоти процесора.
Приклад файлу note.txt:
Aser Note Light 2699 5.6 02.0x11.8x08.3 100 40 10.4 1 1024x0768 60 0.774
ASW ND5123T 3489 7.2 02.3x11.8x10.1 133 32 12.1 2 1024x0768 70 1.300
ARMNote TS80CD 3699 7.2 02.0x11.5x08.8 133 64 11.3 1 1024x0768 75 1.300
AST Ascentia P50 4499 7.5 02.3x11.3x09.0 133 40 11.3 1 0800x0600 70 0.774
BSI NP8657D 2605 8.0 02.3x11.8x09.3 133 40 11.3 1 1024x0768 60 0.810
BSI NP5265A 3765 8.2 02.5x12.0x09.0 150 32 12.1 2 1024x0768 70 1.300
Dell Xpi P100SD 3459 6.0 02.3x11.0x08.8 100 40 10.3 1 1024x0768 60 0.773
Digital HiNote 4799 4.0 01.3x11.0x08.8 120 40 10.4 1 0800x0600 56 1.000
Gateway Solo S5 4499 5.6 02.0x11.9x08.8 133 40 11.3 2 1024x0768 60 0.686
Hertz Z-Optima NB 3995 8.0 02.3x11.9x09.0 150 40 11.2 2 1024x0768 75 1.000
HP OmniBook 5500 6120 7.1 02.0x11.5x09.0 133 64 11.4 1 1024x0768 75 1.300
IBM ThinkPad 560 3749 4.1 01.3x11.8x08.8 120 40 12.1 2 1024x0768 85 0.774
NEC Versa 4080H 4780 6.6 02.3x11.8x09.5 120 48 10.4 1 0800x0600 70 0.776
Polywell Poly 500 3300 7.9 02.3x11.9x09.0 120 40 10.4 1 1024x0768 72 1.000
Samsung SENS 810 3667 8.7 02.3x11.5x09.5 100 32 11.4 2 1024x0768 75 0.773
Twinhead Slimnote 2965 7.4 02.0x11.5x08.0 075 64 10.4 1 1024x0768 70 0.772
Опис файлу note.txt:
У файлі note.txt міститься текстова інформація про ноутбук. Кожен рядок містить дані про одну модель. Дані в рядку розміщаються в наступних полях:
1:20 — найменування моделі;
21:24 — ціна в доларах (ціле число);
26:28 — маса ноутбука в кг (число з десятковою крапкою з чотирьох символів);
30:43 — габаритні розміри ноутбука в дюймах (Висота х довжина х ширина — три числа з десятковою крапкою (4 символи, включаючи крапку, розділені 'х');
44:47 — частота процесора в Гц (ціле число з трьох символів);
49:50 — максимальний обсяг ОЗП в Мб (ціле число з двох символів);
52:55 — розмір діагоналі дисплея в дюймах (число з десятковою крапкою з чотирьох символів, включаючи крапку);
57 — розмір відеопам'яті в Мб — ціле число з одного символу;
59:67 — роздільна здатність дисплея у пікселах (два цілих числа, розділені 'х');
69:70 — частота регенерації дисплея в Гц (ціле число з двох символів);
72:76 — обсяг HDD у Гб (число з десятковою крапкою з п'яти символів).
Усі не описані позиції заповнені пробілами.