
- •Лабораторна робота №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
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Файли з довільним доступом
Особливістю таких файлів є те, що:
файл складається з компонентів (записів) однакової довжини (розміру). Кожен запис у файлі має номер.
Уздовж файлу переміщається покажчик, положення якого можна позиціонувати програмно за допомогою функції fseek()
Запис
#0 Запис
#1 Запис
#n Запис
#2
функція fseek() вимагає три аргументи:
змінна потоку типу File*, відкритого для двійкового доступу.
значення зміщення покажчика щодо заданої (чи поточної) позиції
один із трьох компонентів:
SEEK_SET – зсув покажчика на число байтів, на які внутрішній покажчик пересувається уперед від початку файлу;
SEEK_CUR – зсув на число байтів вперед чи назад від поточної позиції покажчика, у залежності від знака константи;
SEEK_END – зсув на число байт від кінця файлу в напрямку до початку.
Приклад 2. Написати програму для читання 11-го запису у файлі int.dat.
#include <stdio.h>
#include <stdlib.h>
int main()
{
File*inpf;
int val;
inpf=fopen (“int.dat”, “rb”);
if ( ! inpf)
{
puts(“Can’t create file”);
exit (1);
}
fseek(inpf,10*sizeof(int),SEEK_SET);
fread(&val, sizeof(int),1, inpf);
printf(“ Record #10 == %d”,val);
fclose(inpf);
return 0;
}
Другий аргумент у fseek() – добуток розміру в байтах змінної типу int на номер запису (10) шуканого значення.
Якщо змінна fl типу File* вказує на відкритий файл записів zap, то оператор fseek (fl,sizeof(zap),SEEK_CUR); - перемістить поточний покажчик файла з поточного запису на наступний.
А оператор fseek (fl,sizeof(zap), SEEK_CUR); - перемістить поточний покажчик файлу назад на один запис.
Виклик функції fread() так само переміщає покажчик файлу вперед, тому після читання одного запису за допомогою fread() можна використовувати fseek() для відновлення позиції покажчика для того, щоб підготуватися до перезапису нової інформації в те ж місце
Оператор fseek(f,0,SEEK_END); - знаходить кінець файлу. Цей оператор можна використовувати перед викликом функції fwrite(), щоб додати нові записи у файл, відкритий не в режимі додавання в кінець файлу.
Приклад 3. За допомогою функції fseek() і fwrite() модифікувати 11-й запис у файлі int.dat.
#include <stdio.h>
#include <stdlib.h>
int main()
{
File*outf;
int val=99;/*нове значення запису */
outf=fopen (“int.dat”, “r+b”);
if (!outf)
{
puts(“Can’t create file”);
exit(1);
}
printf(“Writing %d to record #10”,val);
fseek(outf, 10*sizeof(int),SEEK_SET);
fwrite(&val,sizeof(int),1,outf);
fclose(outf);
return 0;
}
Приклад виконання завдання 1
Варіант 6. Розробити описовий алгоритм, схему алгоритму і написати програму для дозапису рядка в кінець текстового файлу.
Дана програма буде складатися з основної функції int main(), та двох функцій для виконання поставленої задачі:
void EnterData(const char*file_name)–призначена для перезапису даних в файлі.
void AddWordInEnd (const char *file_name) -призначена для дозапису слова в кінець текстового файлу.
Програма буде мати наступний вигляд:
Лістинг програми
#include <stdio.h>
#include <conio.h>
#include <string.h>
void EnterData(const char *file_name);
void AddWordInEnd(const char *file_name);
/*Перезапис всіх даних в файлі та дозапис нових даних в файл.*/
void EnterData(const char*file_name)
{
FILE*f; // file variable
f=fopen(file_name,"wb"); // відкрити файл для запису
if(f) // якщо файл відкритий успішно
{
char str[100];
printf("Please enter data:\n");
do
{
gets(str); //ввести рядок з клавіатури
if(strlen(str)==0) // якщо рядок пустий то вихід
break;
fprintf(f,"%s\n",str);
}while(1);
fclose(f); // закрити файл і зберегти всі зміни
}
}
void AddWordInEnd(const char*file_name)
{
char word[100]; //рядок змінено
printf("Enter word:\n");
gets(word);// ввести рядок з клавіатури
FILE*f;
f=fopen(file_name,"ab");//відкриття файлу для дозапису
if(f)
{
fseek(f,0,SEEK_END);/*змінити поточну позицію в файлі до кінця*/
fprintf(f,"\n%s",word);//записати рядок в кінець файлу
fclose(f);
}
}
void main()
{
clrscr();
int h;
char file_name[]={"1.txt"};
AddWordInEnd(file_name);
getch();}
Тестування:
Для перевірки правильності роботи програми безпосередньо введемо до текстового файлу „ 1.txt ” деяку інформацію, наприклад запишемо “Ne xo4y v armijy”, тоді запустимо програму і введемо „Ale potribno zahuwatu Batkivwuny”.
Відкривши файл „ 1.txt ” бачимо:
Ne xo4y v armijy
Ale potribno zahuwatu Batkivwuny