Methods_AP_LABS_II
.pdfifstream in("test.in"); if(!in)
{
cerr << "Cannot open input file!\n"; return -1;
}
int a, b;
in >> a >> b;
ofstream out("test.out"); if(!out)
{
cerr << "Cannot open output file!\n"; return -2;
}
out << a + b;
return 0;
}
Закрити файл можна за допомогою методу потоку void close().
Наприклад,
ifstream i(“test.txt”);
...
i.close();
Лістинг 6.4
У наведеному нижче прикладі з файлу зчитується матриця, з якою далі виконуються прості операції.
#include <iostream> #include <fstream>
int main()
{
using namespace std;
// Відкрити файл тільки для читання ifstream in("tst4.in");
if(!in)
{
cerr << "Не можу відкрити вхідний файл!"; return -1;
}
int n, m;
in >> n >> m;
//Створити матрицю int** mat = new int* [n]; for(int i = 0; i < n; ++i)
mat[i] = new int[m];
//Прочитати матрицю з файлу for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j) in >> mat[i][j];
double sum = 0;
//Знайти суму всіх елементів матриці for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j) sum += mat[i][j];
// Відкрити файл для запису ofstream out("tst4.out");
if(!out)
{
cerr << "Не можу відкрити вихідний файл!"; return -2;
}
// Записати матрицю з коефіцієнтами розділеними на суму її
елементів
for(int i = 0; i < n; ++i, out << endl) for(int j = 0; j < m; ++j)
out << '\t' << mat[i][j] / sum;
}
6.2 Практичні завдання
1. Виконати завдання згідно свого варіанту (таблиця 6.9).
Таблиця 6.9
Варіанти завдань
Варіант |
Завдання |
Заданий файл f, |
компоненти якого є дійсними числами. |
1Знайти:
а) суму компонентів файлу f;
б) добуток компонентів файлу f.
Заданий файл f, компоненти якого є дійсними числами.
2Знайти:
а) суму квадратів компонент файлу f;
б) модуль суми й квадрат добутку компонент файлу f.
Заданий файл f, компоненти якого є дійсними числами.
3Знайти:
а) найбільше з .значень компонентів файлу f;
б) найменше зі значень компонентів з парними номерами; Заданий файл f, компоненти якого є дійсними числами. Знайти:
4а) найбільше зі значень модулів компонент із непарними номерами; б) суму найбільшого й найменшого зі значень компонентів;
Заданий файл f, компоненти якого є цілими числами.
5Знайти:
а) кількість парних чисел серед компонентів; б) кількість квадратів непарних чисел серед компонентів; Послідовність x1, x2,… утворена за законом
i 0.1
6xi i3 tg 2i , i=1,2,….
Дано дійсне ε>0. Записати у файл h члени послідовності x1, x2,…, зупинившись після першого члена, для якого виконано
xi .
7Заданий символьний файл f. Одержати копію файлу у файлі g.
Задані символьні файли f1 і f2. Переписати зі збереженням
8порядку проходження компоненти файлу f1 у файл f2, а компоненти файлу f2 - у файл f1. Використовувати допоміжний файл h.
Задані файли f1, f2, f3, f4, f5, компоненти яких є дійсними числами. Організувати обмін компонентами між файлами за
9схемою: f1 →f3, f2 →f4, f3 →f5, f4 →f2, f5 →f1.
Дозволяється використовувати тільки один допоміжний файл h.
Заданий символьний файл f. У файлі f не менш двох
10компонентів. Визначити, є чи два перші символи файлу цифрами. Якщо так, то встановити, чи є число, утворене цими цифрами, парним.
Заданий файл f, компоненти якого є цілими числами.
11Одержати у файлі g всі компоненти файлу f, що є парними числами.
Заданий файл f, компоненти якого є цілими числами.
12Одержати у файлі g всі компоненти файлу f, що діляться на 3, що й не діляться на 7.
|
Заданий файл f, компоненти якого є цілими числами. |
|||
13 |
Одержати у файлі g всі компоненти файлу, що є точними |
|||
|
квадратами. |
|
||
|
Заданий файл f, компоненти якого u0, u1,..., un є послідовними |
|||
14 |
числами Фібоначчі. Одержати у файлі f послідовні числа |
|||
|
Фібоначчі u0, u1,..., un+1. |
|||
|
Заданий символьний файл f. Одержати файл g, утворений з |
|||
15 |
файлу f заміною всіх його прописних (великих) букв |
|||
|
однойменними рядковими (малими). |
|||
|
Заданий файл f, компоненти якого є цілими числами. |
|||
16 |
Записати у файл g всі парні числа файлу f, а у файл h - всі |
|||
|
непарні. Порядок проходження чисел зберігається. |
|||
|
Задані символьні файлу f і g. Записати у файл h спочатку |
|||
17 |
компоненти файлу f, потім - компоненти файлу g зі |
|||
|
збереженням порядку. |
|||
|
Заданий файл f, компоненти якого є цілими числами. |
|||
18 |
Одержати файл g, утворений з файлу f виключенням |
|||
|
повторних входжень того самого числа. |
|||
|
Заданий файл f, компоненти якого є цілими числами. Жоден з |
|||
|
компонентів файлу не дорівнює нулю. Файл f містить стільки |
|||
19 |
ж негативних чисел, скільки й позитивних. Використовуючи |
|||
допоміжний файл h, переписати компоненти файлу f у файл g |
||||
|
||||
|
так, щоб у файлі g спочатку йшли в позитивні, потім |
|||
|
негативні числа. |
|
||
|
Заданий файл f, компоненти якого є цілими числами. Жоден з |
|||
|
компонентів файлу не дорівнює нулю. Числа у файлі йдуть у |
|||
20 |
наступному порядку: десять позитивних, десять негативних і |
|||
т.д. Переписати компоненти файлу f у файл g так, щоб у |
||||
|
||||
|
файлі g числа йшли в наступному порядку: п'ять позитивних, |
|||
|
п'ять негативних, п'ять позитивних, п'ять негативних і т.д. |
|||
|
Заданий файл f, компоненти якого є цілими числами. Жоден з |
|||
|
компонентів файлу не дорівнює нулю. Числа у файлі йдуть у |
|||
|
наступному порядку: десять позитивних, десять негативних і |
|||
21 |
т.д. |
Переписати компоненти файлу f у файл g так, щоб у |
||
файлі g числа йшли в наступному порядку: двадцять |
||||
|
||||
|
позитивних, двадцять негативних, двадцять позитивних, |
|||
|
двадцять негативних і т.д. (передбачається, що число |
|||
|
компонентів файлу f ділиться на 40). |
|||
|
Заданий символьний файл f. |
|||
|
а) Обчислити число входжень у файл комбінацій ab. |
|||
|
б) Визначити входить чи у файл комбінація abcdefgh. |
|||
22 |
Обчислити число входжень у файл кожної з букв а, b, с, d, e, f |
|||
|
і вивести результат у вигляді таблиці: |
|||
|
a-Na |
b-Nb |
c-Nc |
|
|
d-Nd |
e-Ne |
f-Nf |
|
Задані символьні |
файли f |
і g. Визначити, |
чи |
збігаються |
||||
|
компоненти файлу f з компонентами файлу g. Якщо ні, то |
||||||||
23 |
одержати номер |
першого |
компонента, у |
якому f |
і |
g |
|||
відрізняються між собою. У випадку, коли один з файлів має |
|||||||||
|
|||||||||
|
n компонентів (n>0) і повторює початок іншого (більш |
||||||||
|
довгого) файлу, відповіддю повинне бути число n+1. |
|
|
||||||
|
Заданий символьний файл f. Записати |
у |
файл |
g |
зі |
||||
24 |
збереженням порядку проходження ті символи файлу f, яким |
||||||||
|
у цьому файлі передує буква а. |
|
|
|
|
|
|||
|
Заданий символьний файл f. Записати |
у |
файл |
g |
зі |
||||
25 |
збереженням порядку проходження ті символи |
файлу |
f, |
||||||
|
слідом за яким у цьому файлі йде буква а. |
|
|
|
|
|
|||
|
Заданий символьний файл f. Вважаючи, що кількість |
||||||||
26 |
символів у слові не перевершує двадцяти визначити, скільки |
||||||||
у файлі f є слів, що складаються з одного, двох, трьох і т.д. |
|||||||||
|
|||||||||
|
символів. |
|
|
|
|
|
|
|
|
|
Заданий символьний файл f. Вважаючи, |
|
що |
кількість |
|||||
27 |
символів у слові не перевершує двадцяти |
одержати |
|||||||
|
гістограмму (стовпчасту діаграму) довжин усіх слів файлу f. |
|
|||||||
|
Заданий символьний файл f, що містить відомості про |
||||||||
|
співробітників установи, записані по наступному зразку: |
||||||||
28 |
прізвище_ім'я_ по-батькові, |
прізвище_ім'я_ |
|
по-батькові,... |
|||||
Записати ці відомості у файлі g, використовуючи зразки: |
|||||||||
|
|||||||||
|
ім'я_ по-батькові_прізвище, ім'я_ по-батькові_прізвище, ім'я_ |
||||||||
|
по-батькові_прізвище. |
|
|
|
|
|
|
||
|
Заданий символьний файл f, що містить відомості про |
||||||||
|
співробітників установи, записані по наступному зразку: |
|
|
||||||
29 |
прізвище_ім'я_по-батькові,прізвище_ім'я_по-батькові,… |
|
|
||||||
|
Записати ці відомості у файлі g, використовуючи зразки: |
|
|
||||||
|
прізвище_і.п., прізвище_і.п., прізвище_і.п.,… |
|
|
|
|
|
|||
|
Заданий файл f, що містить різні дати. Кожна дата - це число, |
||||||||
|
місяць і рік. Знайти: |
|
|
|
|
|
|
||
30 |
рік з найменшим номером; |
|
|
|
|
|
|
||
|
всі весняні дати; |
|
|
|
|
|
|
|
|
|
саму пізню дату. |
|
|
|
|
|
|
|
2.Завдання початкового рівня
1.В файлі test.in записно цілі числа. Знайти їх суму. Результат запишіть в test.out. Для роботи з файлами використовуйте функції cstdio.
2.В файлі test.in записно цілі числа. Знайти їх суму. Результат запишіть в test.out. Для роботи з файлами використовуйте функції fstream.
3.В файлі test.in записано матрицю NxN. Знайдіть її детермінант. Результат запишіть в test.out. Для роботи з файлами використовуйте функції cstdio.
4.В файлі test.in записано матрицю NxN. Знайдіть її детермінант. Результат запишіть в test.out. Для роботи з файлами використовуйте функції fstream.
5.В файлі test.in записано текст англійською мовою. Запишіть в файл test.out всі рядки з файлу test.in, в яких зустрічається слово “Hello”. Результат запишіть в test.out. Для роботи з файлами використовуйте функції cstdio.
6.В файлі test.in записано текст англійською мовою. Запишіть в файл test.out всі рядки з файлу test.in, в яких зустрічається слово “Hello”.
Результат запишіть в test.out. Для роботи з файлами використовуйте функції
fstream.
7. В файлі test.in записано текст англійською мовою. Замініть всі входження слова “Hello” на слово “World”. Результат запишіть в test.out.
Для роботи з файлами використовуйте функції cstdio.
8. В файлі test.in записано текст англійською мовою. Замініть всі входження слова “Hello” на слово “World”. Результат запишіть в test.out.
Для роботи з файлами використовуйте функції fstream.
9. В файлі test.in записано текст англійською мовою. Змініть регістр алфавітних символів. (Приклад: “Hello, World!” стане “hELLO, wORLD!”). Результат запишіть в test.out. Для роботи з файлами використовуйте функції cstdio.
10.В файлі test.in записано текст англійською мовою. Змініть регістр алфавітних символів. (Приклад: “Hello, World!” стане “hELLO, wORLD!”). Результат запишіть в test.out. Для роботи з файлами використовуйте функції fstream.
3. Завдання середнього рівня
11.Створіть програму, що буде видаляти з лістингу програми на мові С++ (файл *.cpp) коментарі виду /* коментар */. Для роботи з файлами використовуйте функції cstdio.
12.Створіть програму, що буде видаляти з лістингу програми на мові С++ (файл *.cpp) коментарі виду /* коментар */. Для роботи з файлами використовуйте функції fstream.
13.Створіть програму, що буде видаляти з лістингу програми на мові С++ (файл *.cpp) коментарі виду // коментар. Для роботи з файлами використовуйте функції cstdio.
14.Створіть програму, що буде видаляти з лістингу програми на мові С++ (файл *.cpp) коментарі виду // коментар. Для роботи з файлами використовуйте функції fstream.
15.Створіть програму, що буде видаляти в текстовому файлі символи-
роздільники (пробіл, символ табуляції) в кінці строк. Для роботи з файлами використовуйте функції cstdio.
16.Створіть програму, що буде видаляти в текстовому файлі символи-
роздільники (пробіл, символ табуляції) в кінці строк. Для роботи з файлами використовуйте функції fstream.
17.Створіть програму, що буде підраховувати частоти монограм (байтів) в
бінарному файлі. Який байт найчастіше зустрічається в текстовому файлі (*.txt)? Виконуваному файлі (*.exe)? Для роботи з файлами використовуйте функції cstdio.
18.Створіть програму, що буде підраховувати частоти монограм (байтів) в
бінарному файлі. Який байт найчастіше зустрічається в текстовому файлі (*.txt)? Виконуваному файлі (*.exe)? Для роботи з файлами використовуйте функції fstream.
19.Створіть програму, що буде підраховувати ентропію за Шенноном бінарного файлу ($H = - \sum_{i=0}^{255} f_i \log f_i$, де $f_i$ --
частота входження байту $i$). Знайдіть ентропію документу Word
(*.doc) та архіву (*.zip). Для роботи з файлами використовуйте функції cstdio.
20.Створіть програму, що буде підраховувати ентропію за Шенноном бінарного файлу ($H = - \sum_{i=0}^{255} f_i \log f_i$, де $f_i$ --
частота входження байту $i$). Знайдіть ентропію документу Word (*.doc) та архіву (*.zip). Для роботи з файлами використовуйте функції fstream.
21.Створіть програму, що буде в текстовому файлі переводити символи табуляції в пробіли (символ табуляції переводить курсор вперед на позицію кратну 8). Для роботи з файлами використовуйте функції cstdio.
22.Створіть програму, що буде в текстовому файлі переводити символи табуляції в пробіли (символ табуляції переводить курсор вперед на позицію кратну 8). Для роботи з файлами використовуйте функції fstream.
23.Створіть програму, що буде в текстовому файлі переводити пробіли в символи табуляції (символ табуляції переводить курсор вперед на позицію кратну 8). Для роботи з файлами використовуйте функції cstdio.
24.Створіть програму, що буде в текстовому файлі переводити пробіли в символи табуляції (символ табуляції переводить курсор вперед на позицію кратну 8). Для роботи з файлами використовуйте функції fstream.
25.Створіть программу пошуку входження строки в бінарному файлі. Чи входить строка ‘This program’ у виконуваний файл Вашої програми
(*.exe)? Для роботи з файлами використовуйте функції cstdio.
26.Створіть программу пошуку входження строки в бінарному файлі. Чи входить строка ‘This program’ у виконуваний файл Вашої програми
(*.exe)? Для роботи з файлами використовуйте функції fstream.
27.Створіть програму, що буде знаходити всі текстові строки довжиною більше 5 символів в бінарному файлі. Для роботи з файлами використовуйте функції cstdio.
28.Створіть програму, що буде знаходити всі текстові строки довжиною більше 5 символів в бінарному файлі. Для роботи з файлами використовуйте функції fstream.
29.Створіть програму, що буде виводити шістнадцятковий дамп бінарного файлу (замість кожного байту вхідного файлу виводиться значення в шістнадцятковій системі). Для роботи з файлами використовуйте функції cstdio.
30.Створіть програму, що буде виводити шістнадцятковий дамп бінарного файлу (замість кожного байту вхідного файлу виводиться значення в шістнадцятковій системі). Для роботи з файлами використовуйте функції fstream.
31.Створіть програму, що буде виводити вісімковий дамп бінарного файлу
(замість кожного байту вхідного файлу виводиться значення в вісімковій системі). Для роботи з файлами використовуйте функції cstdio.
32.Створіть програму, що буде виводити вісімковий дамп бінарного файлу
(замість кожного байту вхідного файлу виводиться значення в вісімковій системі). Для роботи з файлами використовуйте функції fstream.
33.Створіть програму, що буде виводити десятковий дамп бінарного файлу (замість кожного байту вхідного файлу виводиться значення в десятковій системі). Для роботи з файлами використовуйте функції cstdio.
34.Створіть програму, що буде виводити десятковий дамп бінарного файлу (замість кожного байту вхідного файлу виводиться значення в десятковій системі). Для роботи з файлами використовуйте функції fstream.