
- •Лабораторна робота №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
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Завдання 1
Розробити функцію для підрахунку кількості рядків в текстовому файлі.
Розробити функцію для підрахунку кількості слів в текстовому файлі.
Розробити функцію для порівняння двох текстових файлів та виведення номеру рядка та позиції символу, де вони відрізняються.
Розробити функцію для підрахунку кількості повторень заданого слова в текстовому файлі.
Розробити функцію для дозапису рядка в початок текстового файлу.
Розробити функцію для дозапису рядка в кінець текстового файлу.
Розробити функцію для дозапису рядка в середину текстового файлу.
Розробити функцію для видалення рядка з середини текстового файлу.
Розробити функцію для видалення рядка з початку текстового файлу.
Розробити функцію для дозапису слова в перший рядок текстового файлу.
Завдання 2
Розробити функцію для дозапису заданого набору цілих даних у початок існуючого двійкового файлу.
Розробити функцію для дозапису заданого набору дійсних даних у середину існуючого двійкового файлу з заданої позиції.
Розробити функцію для дозапису заданого набору символів у кінець існуючого двійкового файлу.
Розробити функцію для видалення заданої кількості цілих даних з початку двійкового файлу.
Розробити функцію для видалення заданої кількості дійсних даних з середини двійкового файлу з заданої позиції.
Розробити функцію для видалення заданої кількості дійсних даних з кінця двійкового файлу.
Розробити функцію для копіювання заданої кількості цілих даних з заданої позиції.
Розробити функцію для видалення заданої кількості цілих даних з заданої позиції заданого двійкового файлу і вставки їх з заданої позиції у новий файл.
Розробити функцію для перезапису змісту файлу з кінця в початок в оберненому порядку.
Розробити функцію для створення нового файлу, який містить цілі дані з заданого файлу, кратні одинадцяти.
Теоретичні відомості Читання і запис текстових файлів
Введення-виведення окремих символів. Одним з найбільш ефективних способів здійснення введення-виведення одного символу є використання бібліотечних функцій getchar() і putchar().
getchar() – функція, що здійснює введення одного символу з консолі. При зверненні вона повертає в функцію, яка її викликала один введений символ. При читанні з файлу з допомогою функції getchar() може бути досягнуто кінця файлу. В цьому випадку операційна система у відповідь на спробу читання символу передає функції getchar() значення EOF (End of File).
putchar() – функція, що виводить в стандартний потік один символ, при цьому також повертає в функцію, яка її викликала щойно введений символ.
Введення-виведення рядків. Однією з найбільш популярних операцій введення-виведення є операція введення-виведення рядка символів. В бібліотеку мови С для обміну даними через стандартні потоки введення-виведення включені функції введення-виведення рядка gets() і puts(), які зручно використовувати при створенні діалогових систем. Обидві функції мають тільки один аргумент – вказівник s на масив символів. Якщо рядок прочитано нормально, функція gets() повертає адресу того масиву s, в який відбувається введення рядка. В разі помилки повертається NULL.
Функція puts() у випадку успішного завершення повертає останній символ, який завжди є символом ’\n’. У разі помилки повертається EOF.
Наведемо найпростіший приклад використання цих функцій:
#include<stdio.h>
char str1[] = ” ”;
int main ()
{
char name[80];
puts(str1);
gets(name);
return 0;
}
Будь-який рядок символів в мові С повинен закінчуватись нуль-символом ’\0’. В останній елемент масиву str1 нуль-символ буде записаний автоматично під час трансляції при ініціалізації масиву.
Форматне введення-виведення. Для роботи з стандартними потоками в режимі форматного введення-виведення визначені дві функції:
printf() – форматне виведення, перетворює дані з внутрішнього представлення в символьний вид в відповідності з форматним рядком і виводить їх в потік. Дані, які перетворюються і виводяться, задаються як аргументи функції printf ().
scanf() – форматне введення з вхідного потоку, читає послідовності кодів символів з вхідного потоку і інтерпретує їх як цілі числа, дійсні числа, одиничні символи рядка.
Для роботи з файлами включені наступні функції:
fgetc (), getc () – введення (читання) одного символу з файлу;
fputc (), putc () – запис одного символу в файл;
fprintf () – форматне введення в файл;
fscanf () – форматне введення (читання) з файлу;
fgets () – введення (читання) рядка з файлу;
fputs () – запис рядка в файл.
Функція fputs(const char*s, FILE*stream) записує обмежений символом ’\0’ рядок в файл, визначений вказівником stream на потік, і повертає невід’ємне число. Символ ’\0’ в файл не переноситься, і символ ’\n’ не записується в кінці стрічки замість ’\0’.
Функція fgets (char*s, int n, FILE*stream) – читає з визначеного вказівником stream файлу не більше (n-1) символів і записує їх в рядок, на який вказує вказівник s. Функція закінчує читання, як тільки прочитає (n-1) символів чи зустріне символ нового рядка ’\n’, який переноситься в рядок s. Додатково в кінець кожної стрічки записується ознака кінця стрічки ’\0’. В випадку успішного завершення функція повертає вказівник s. При помилці чи при досягненні кінця файлу, при умові, що із файлу не прочитаний жоден символ, повертається значення NULL. В цьому випадку вміст масиву, який адресується вказівником s, залишається без змін. На відміну від fgets () функція gets () відкидає символ ’\n’.
Перед тим як працювати з потоком його необхідно ініціалізувати. При цьому потік зв’язується в виконуваній програмі з структурою визначеного типу FILE. Визначення структурного типу FILE знаходиться в заголовочному файлі stdio.h. В структурі FILE вміщуються компоненти, з допомогою яких ведеться робота з потоком: покажчик на буфер, покажчик поточної позиції в потоці та ін.
При відкритті потоку в програму повертається покажчик на потік, що є покажчик на об’єкт структурного типу FILE. Цей покажчик ідентифікує потік в усіх послідуючих операціях.
Покажчик на потік, наприклад fp, повинен бути описаний в програмі наступним чином:
#include<stdio.h>
FILE *fp;
Покажчик на потік набуває значення в результаті виконання функції відкриття потоку:
fp = fopen (ім’я_файлу, режим_відкриття);
Параметри функції fopen () є покажчиками на масиви символів, які вміщують відповідно ім’я файлу, зв’язаного з потоком, і рядка режимів відкриття. Однак ці параметри можуть задаватись і безпосередньо у вигляді рядків при виклику функції відкриття файлу:
fp = fopen (”file.txt”,”r”);
де file.txt – ім’я деякого файлу, зв’язаного з потоком;
r – позначення одного з режимів роботи з файлом (тип доступу до потоку).
Після закінчення роботи з файлами рекомендується закрити їх явно. Для цього використовується функція fclose (покажчик на потік)
Відкритий файл можна відкрити повторно (наприклад, для зміни режиму роботи з ним) тільки після того, як файл буде закритий з допомогою функції fclose().