- •Алгоритмитизация и программирование Лекция 1
- •Общие сведения
- •Модель osi. Понятие об интерфейсах и протоколах. Рекомендация itu-t X.200
- •1.3. Системы счисления
- •Лекция 2
- •2.1. Способы описания алгоритмов функционирования узла коммутации
- •2.2. Описание алгоритмов с помощью диаграммы состояний
- •2.3. Описание алгоритмов с помощью временной диаграммы
- •Описание алгоритмов с помощью текстового описания
- •Лекция 3
- •3.2. Типы данных
- •3.3. Арифметические операторы
- •3.4. Операторы сравнения
- •3.5. Побитовые операторы
- •3.6. Кодовые таблицы
- •3.7. Ввод/вывод данных
- •Лекция 4
- •4.2. Переменные
- •4.3. Ввод/вывод данных
- •4.4. Арифметические операции
- •4.5. Взаимосвязь чисел и литер
- •Лекция 5
- •5.1. Базовые конструкции
- •5.2. Операторы базовых конструкций
- •If (условие) {операторы 1}
- •If совместно с else
- •Лекция 6
- •6.1. Функции
- •6.2. Массивы
- •6.3. Указатели
- •Лекция 7
- •7.1. Операции с файлами
- •7.2. Открытие текстового файла для записи
- •7.3. Открытие текстового файла для чтения
- •Программный файл генерации случайных чисел “generation.Exe”. В результате создается текстовый файл с именем “qwerty.Dot”.
- •Лекция 8
- •8.1. Создание и инициализация строк
- •8.2. Функции для работы со строками
- •Лекция 9
- •9.1. Структуры
- •9.2. Формирование контрольной суммы
7.3. Открытие текстового файла для чтения
Для открытия файла для чтения используются переменная fstream file; оператор <переменная_потока>.open(путь_к_файлу, режим);
Для закрытия файла используется оператор <переменная_потока>.close();
Пример: открытие файла1 для чтения из колонки вещественных чисел оператором while.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int n=-1; float a; //считывание данных на 1 больше
fstream file1; //открываем файл в режиме чтения
file1.open("C:\\SOURCE\\qwerty.dot");
while (!file1.eof())
{
n++;
file1>>a;
cout<<a<<endl;
}
file1.close();
cout<<endl; cout<<"n="<<n<<endl;
return 0;
}
Поскольку символ конец файла находится в 6-ой строке, то при использовании оператора while последнее значение переменной выводится дважды.
Пример: открытие файла1 для чтения из колонки 5 записанных вещественных чисел оператором for.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int i; float a;
fstream file1; //открываем файл в режиме чтения
file1.open("C:\\SOURCE\\qwerty.dot");
for (i=1; i<=10; i++)
{
file1>>a;
cout<<a<<endl;
}
file1.close();
cout<<endl; cout<<"i="<<i<<endl;
return 0;
}
Поскольку в операторе for число считываний равно 10, то последнее значение переменной выводится 5 раз. Получим на экране 1 2 3 4 5 5 5 5 5 5.
Пример: открытие файла3 для чтения произвольного числа строк (с уничтоженной строкой eof).
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int n=-1; string str; //считывание данных на 1 больше
fstream file3; //открываем файл в режиме чтения
file3.open("C:\\SOURCE\\qwerty.dot");
while (!file3.eof())
{
n++;
getline(file3,str);
cout<<str<<endl;
}
file3.close();
cout<<endl; cout<<"n="<<n<<endl;
return 0;
}
При чтении файла3 имеем
Иванов – 36 лет
Петров – 17 лет
Сидоров – 50 лет
Пример: открытие файла4 для чтения символьного массива.
#include <iostream> //библиотека ввода/вывода
#include <iostream> //библиотека ввода/вывода
#include <windows.h> //установка команд операционной системы
#include <cstdio> //для функции gets()
#include <fstream> //потоки ввода/вывода в файлы;
using namespace std;
int main()
{
char string[80]; fstream file4;
file4.open("C:\\SOURCE\\qwerty.txt", fstream::in);
int size(0); //int size=0;
while(!file4.eof()) //определение длины текста
{
file4.get(string[size]);
cout<<string[size];
size++;
}
file4.close(); cout<<"\r";
char y1=string[3]; cout<<" y1="<<y1<<endl;
char y2=string[31]; cout<<" y2="<<y2<<endl;
return 0;
}
При открытии строчного файла предыдущего примера получим следующее заполнение массива string (рис. 9.1):
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
y |
1 |
= |
3 |
|
- |
|
п |
е |
р |
в |
а |
я |
|
ц |
и |
ф |
р |
а |
|
з |
а |
ч |
е |
т |
к |
и |
CR |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
y |
2 |
= |
7 |
|
- |
|
в |
т |
о |
р |
а |
я |
|
ц |
и |
ф |
р |
а |
|
з |
а |
ч |
е |
т |
к |
и |
CR |
Рис. 7.1. Заполнение массива
Теперь, чтобы получить численное значение численной переменной y1 следует код цифры перевести в число: int y1=string[3]; y1=y1-48;
Задание 1. Выполнить лабораторную работу 7 (Операции с файлами).
Задание 2. Выполнить лабораторную работу 7a (Операции с файлами).
При выполнении курсовой работы требуется создать два программных файла (generation.exe, request.exe) и два текстовых файла (qwerty.dot, zxcvbn.dot).
