Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика.ЛБ

.pdf
Скачиваний:
15
Добавлен:
14.04.2015
Размер:
950.97 Кб
Скачать

Параметр mode може приймати одне із значень, призначуване в залежності від мети відкриття файлу, або комбінацію цих значень, отриману з використанням операції " або " , тобто "|" . Операції мають вигляд:

ios

:: app файл (потік) відкривається для додавання в кінець("а");

ios

:: in

файл відкривається для читання (" r ") ;

ios

:: out

файл відкривається для запису ("w ");

ios

:: ate

відкрити файл і установити покажчик потоку на кінець

файлу;

 

 

ios

:: binary відкрити файл у двійковому режимі ;

ios

:: trunc відкрити файл і видалити зміст файлу ;

ios

:: nocreate відкрити існуючий файл, якщо він не існує

операцію завершити повідомленням;

ios

:: noreplace якщо файл існує видати повідомлення про помилку,

за винятком випадків пошуку кінця або файлу додавання у файл.

Розглянемо деякі приклади записів функцій відкриття файлу :

#include < fstream > using namespace std; int main ( )

{

fstream fp; // опис файлової змінної;

//відкривається файл myfile.dat для запису, тобто створюється новий

файл;

fp. open ( " a : \ cpp \ myfile.dat " , ios :: out)

//відкривається раніше створений файл file2.dat для читання даних; fp.open (" c : \ vp \ file2.dat ", ios :: in );

// відкривається файл для читання або запису з використанням // двійкового режиму;

fp .open (" myfile " , ios :: out | ios :: in | ios :: binary); return 0;

}

Файлова змінна fp повинна бути попередньо описана як об'єкт класу fstream або ofstream. Якщо під час відкриття файлу відбувається помилка, то завжди fp = 0, тобто файлова змінна дорівнює нулю. Це використовується для визначення результату відкриття файлу в такий спосіб :

91

#include < fstream > using namespace std; main ( )

{

ofstream fp;

fp.open ( " Filename " , ios :: app); // Додати у файл if (!fp )

{

cout << "Помилка відкриття файлу " << endl;

exit (0);

 

}

// Вихід із програми

else

{

// Текст програми роботи з файлом

}

}

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

while ( ! fp.eof ( ))

{……………

…………...}

Приклад 6.1 Записати у файл п'ять прізвищ.

//P5_1.CPP запис у файл п'яти прізвищ

#include < fstream > using namespace std;

int main ( )

{

ofstream fp;

fp.open ( " a : \ Myfile " , ios :: out); // Створення нового файлу fp << " Авдєєв А.И. " << endl;

fp << " Бобрів А.П. " << endl; fp << " Кузьмін И.В. " << endl; fp << " Попов Р.Л. " << endl; fp << " Яковлев Ю.Т. " << endl; fp. close ( ); // Закриття файлу

}

92

Відкривати файли можна й інакше, наприклад, використовуючи класи

ifstream для читання з файлу (тобто введення) і

ofstream для запису

у файл :

 

 

ifstream in ( " Namefile ");

// відкриття файлу для читання з файлу

ofstream out ( " Namefile2 ");

// відкриття файлу для запису у файл ,

де in і out файлові змінні відповідного класу.

Приклад 6.2 Копіювання одного текстового файлу в інший файл.

// P5_2.CPP копіювання текстового файлу

file1 у файл file2

#include <fstream>

 

 

 

#include < iostream >

 

 

 

using namespace std;

 

 

 

void main ( )

 

 

 

{

 

 

 

ifstream in ( ‖file1") ;

 

 

 

ofstream out ( "file2") ;

 

 

 

char st [80];

 

 

 

while ( ! in.eof ( ) )

 

 

 

{

 

 

 

in .getline ( st, 80 )

//

in об'єкт ifstream

out << st << endl;

//

запис st у файл file2

cout << st << endl;

//

виведення

st на екран

}

 

 

 

in.close();

out.close();

}

Конструктори ifstream і ofstream можуть бути записані у вигляді: ifstream in (const char *name, int mode = ios :: in,

int prot = filebuf :: penprot);

тобто ці конструктори можуть включати ті ж аргументи, що і open. Приклад 6.3 Записати у файл задану матрицю matr ( 2, 4) построково.

//P5_3.CPP запис у файл матриці построково

#include <iostream> #include < fstream > using namespace std;

void main ( )

{

int mas [4], matr [2][4]; int i, j;

ofstream out (" filemat " );

93

for ( i = 0;

i < 2;

i++)

for ( j = 0;

j < 4;

j++ )

{

 

 

cin >> mas [j];

out << mas[j]<<‖ ―;

}

out . close( );

ifstream in ("filemat ‖);

for ( i = 0;

i < 2 ;

i++)

{

 

 

 

for ( j = 0 ; j < 4;

j++)

in>> matr [ i ] [ j ] ;

// Запис масиву в рядок матриці

}

 

 

 

in . close ( );

 

 

 

for ( i = 0;

i < 2 ;

i++ ) // Виведення матриці на екран

{

 

 

 

cout << endl ;

 

 

for ( j = 0;

j < 4 ;

j++)

cout << matr [i] [j];

}

}

6.3Контрольні питання

1.Чим файл відрізняється від масиву ?

2.За допомогою якої функції можна розпізнавати кінець файлу ?

3.Як описується файлова змінна ?

4.Який порядок створення файлу ?

5.Які засоби відкриття файлів ?

6. Які параметри можуть використовуватися як компоненти файлу ?

6.4 Індивідуальні завдання

1. Створити файл, що містить список студентів групи з наступними характеристиками : адреса, місце роботи батьків , вік і забезпечити виведення інформації про студентів за заданим прізвищем .

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

3.Створити файл, що містить коротку бібліографічну інформацію о прочитаних вами книгах. Забезпечити виведення інформації про всі книги, видані у заданому діапазоні років.

94

4.Створити файл, що містить наступну інформацію: прізвище, рік народження, стать. Забезпечити виведення прізвищ за заданим роком народження.

5.Створити файл, що містить номери потягів і їхні маршрути .

Забезпечити видачу інформації про маршрут за введеним номером потяга.

6.Створити файл, що складається з масиву чисел X(20). Забезпечити читання цього файлу і заповнення матриці Y(4,5).

7.Створити файл , що містить наступну інформацію: прізвище, номер домашнього телефону. Забезпечити видачу номера телефону за введенням прізвища.

8.Створити файл, що містить коротку бібліографічну інформацію про

прочитані вами книги. Забезпечити виведення інформації

про

книгу за

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

 

 

9. Створити файл, що містить англійські слова

і їх

переклад.

Забезпечити переклад введеного англійського слова , що

входить у

словник.

 

 

10.Створити файл, що містить список власників автомобілів із указівкою кольору, номеру й адреси власника. Вивести за запитом про колір прізвища власників автомобілів і дані про машини.

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

12.Створити файл, що містить слова. Забезпечити виведення слів, що починаються з великої літери.

13.Створити файл, що містить список товарів з наступними характеристиками: назва, ціна, срок придатності. Забезпечити виведення інформації про товари, найбільша ціна яких не перевищує заданої за запитом.

14.Елементами файлу є відомості про успішність. Скільки в групі відмінників і двієчників?

15.Створити файл, що містить розклад роботи лікаря. Вивести дні тижня,

уякі лікар працює до обіду.

16.Створити файл, що містить коротку інформацію про пацієнтів клініки. Вивести інформацію про пацієнтів за зменщенням року народження.

17.Створити файл , що містить список мешканців будинку з указівкою прізвища, місця роботи і року народження. Вивести за запитом про прізвище мешканця.

18.Створити файл, що містить розклад занять студентів групи. Забезпечити виедення розкладу по введеному дню тижня.

19. У тексті програми мовою C++ підрахувати кількість операторів

"cin " і " if " .

95

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

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

22.У тексті програми мовою С++ (ім'я файлу на диску ввести за запитом) підрахувати кількість операторів, пам'ятаючи, що кожен оператор закінчується

";".

23.Створити файл, що містить список прізвищ. Забезпечити виведення прізвищ, що починаються з літери, що вводиться за запитом.

24.У файл із прізвищами студентів вставити нове прізвище після заданого прізвища.

25.У файлі вказані прізвища переставити місцями і вивести результат на

екран.

96

ПЕРЕЛІК ПОСІЛАНЬ

1.Павловская Т.А. С/С++. Программирование на языке высокого уровня — СПБ Питер.: 2004., — 461 с.

2.Франка П. C++: учебный курс. - СПб.: Питер, 2003. — 521 с.

3.Сабуров С.В. Языки программирования C и C++. М.: Букпресс, 2006. 647 с.

4.Страуструп Б. Язык программирования С++. Часть 1. — Киев: "ДиаСофт", 1993. — 264 с.

5.Страуструп Б. Язык программирования С++. Часть 2. — Киев: "ДиаСофт", 1993. — 296 с.

6.Подбельский В. В. Язык Си++ : учебное пособие. – 5 - е изд. - М.: Финансы и статистика, 2000. - 560 с.

7.Глушаков С.В. и др. Язык программирования С++. —Харьков: Фолио,

2002. — 500 с.

8.Х.М.Дейтел, П.Дж. Дейтел Как программировать на С++.- М.:ЗАО «Издательство БИНОМ», 2000 г. — 1024 с.

97

Навчальне видання

Методичні вказівки до виконання лабораторних та практичних робіт з курсів ―Інформатика‖ для студентів напряму підготовки 6.170103 -

«Управління інформаційною безпекою».

Укладачі: Сінельнікова Т.Ф

Відповідальний за випуск Е. П. ПутятІн Редактор

План , поз.16 Підп. до друку Формат 60х84 1/16

Умов. друк. арк. 4,8. Облік вид. арк. 4,2. Вид.№32. Тираж 120 прим.

Зам.№___ .Ціна договірна.

ХHУРЭ. 61726 Харків, просп. Леніна, 14.

Надруковано в учбово-виробничому видавничо-поліграфічному центрі ХHУРЕ 61726 Харків, просп. Леніна, 14.

99