Примеры работы с текстовыми файлами
Пример 1.Дан текстовый файл с именем str.txt. В него занесено несколько строк. Программа считывает строкииз файла и распечатывает их на экран.
Program MyTest10_1;
{$APPTYPE CONSOLE}
Uses SysUtils, EsConsole in ‘EsConsole.pas’;
Var F: TextFile ;
Str1: String[80] ;
Begin
AssignFile (f,’str.txt’) ;
Reset (f);
{---Распечатка строк из файла на экран---}
While not eof (f) do
Begin
readln(f,str) ;
writeln(str);
end;
CloseFile(f);
end.
Пример 2. Дан текстовый файл с именем input.txt, имеющий следующие данные. В первой строке указана размерность массива. Во второй строке содержится число . Начиная с третьей строки, заданы целочисленные элементы одномерного массива. Вывести массив из файла на экран. Вычислить сумму элементов массива от первого до элемента с индексом : и среднее арифметическое значение оставшихся. Создать новый текстовый файл output.txt, в который с соответствующими заголовками поместить исходный массив и результат работы. Перед каждым заголовком вставить по две пустой строке.
Пример исходного и полученного файлов:
Листинг программы:
program ex2;
{$APPTYPE CONSOLE}
Uses SysUtils, EsConsole in ‘EsConsole.pas’;
var f1,f2: textFile;
n,k,i,sumk: integer;
sred:real;
a: array[1..100] of integer;
Begin
assignFile(f1,'input.txt'); reset(f1);{открываем файл для чтения}
{считываем размер массива и номер элемента}
readln(f1,n);readln(f1,k);
for i:=1 to n do read(f1,a[i]); {считываем элементы массива}
closeFile(f1);{закрываем исходный файл, он больше не нужен}
assignFile(f2,'output.txt');rewrite(f2); {открываем новый файл для записи}
{выводим в файл две пустые строкии заголовок}
writeln(f2);writeln(f2);writeln(f2,'ischod massiv');
{заносим в файл элементы массива}
for i:=1 to n do write(f2,a[i],' ');writeln(f2);
{рассчитываем сумму до k-го элемента}
sumk:=0;
for i:=1 to k do sumk:=sumk+a[i];
{выводим сумму в файл, вставив перед ней две пустые строки}
writeln(f2);writeln(f2);writeln(f2,'sum do ',k,'-o elem=',sumk);
{рассчитываем среднее от k-го элемента}
sred:=0;
for i:=k+1 to n do sred:=sred+a[i];
sred:=sred/(n-k);
{выводим среднее в файл, вставив перед две пустые строки}
writeln(f2);writeln(f2);writeln(f2,'sred ot ',k,'-o elem=',sred:10:3);
closeFile(f2);
end.
Пример 3. Дан текстовый файл c именем dat.dat, в который занесен массив целых чисел. Найти среди них максимум. Размер матрицы задан в первой строке файла, элементы – начиная со второй строки.
Создать новый текстовый файл, в который вывести исходную матрицу, отступив одну строку вывести максимум и его индексы.
Пример исходного и полученного файлов:
Листинг программы:
program ex_file;
{$APPTYPE CONSOLE}
Uses SysUtils, EsConsole in ‘EsConsole.pas’;
var f:textFile;
n,m,i,j,max,iMax,jMax: integer;
matr: array[1..100,1..100] of integer;
Begin
assignFile(f,'input3.txt');reset(f);
readln(f,n,m);
for i:=1 to n do for j:=1 to m do read(f,matr[i,j]);closeFile(f);
assignFile(f,'output3.txt');rewrite(f);
writeln(f,'matr1');
for i:=1 to n do begin
for j:=1 to m do write(f,matr[i,j],' ');
writeln(f);
end;
max:=matr[1,1]; iMax:=i;jMax:=j;
for i:=1 to n do for j:=1 to m do
if max<matr[i,j] then begin max:=matr[i,j];iMax:=i;jMax:=j end;
writeln(f);writeln(f,'max=',max);
writeln(f,'index''s ',iMax,' ',jMax);
closeFile(f);
end.
Контрольные вопросы
1. Чем отличается текстовый файл от типизированного файла?
2. Какие операторы служат для чтения информации из текстового файла?
3. Какие операторы служат для записи информации в текстовый файл?
Тестовые задания
1. КАКИЕ КОНСТРУКЦИИ ИСПОЛЬЗУЮТСЯ ПРИ ОПИСАНИИ ТЕКСТОВЫХ ФАЙЛОВ:
1) File
2) Filetext
3) Textfile
4) Of
5) <тип элементов>
6) string
2. ВЫБЕРИТЕ ВЕРНОЕ ОПИСАНИЕ ТЕКСТОВОГО ФАЙЛА:
1) Var t: textfile;
2) Var t: file of string;
3) Var t: filetext;
4) Var t: text of file;
3. КАКИЕ ОПЕРАТОРЫ ЦИКЛА ЖЕЛАТЕЛЬНО ИСПОЛЬЗОВАТЬ ПРИ ЧТЕНИИ ИНФОРМАЦИИ ИЗ ТЕКСТОВОГО ФАЙЛА:
1) For-to-do
2) For-downto-do
3) While-do
4) Repeat-until
Практические задания
Задание 1: работа с текстовыми файлами (контрольное)
Цель задания
Получение практических навыков работы с текстовыми файлами.
Постановка задачи
Задать текстовый файл input1.txt, содержащий несколько строк. Определить, сколько строк содержится в этом файле, сколько символов «v» содержится во второй строке. Результаты заносятся в отдельный текстовый файл output1.txt по следующему формату:
Исходный текст
<все исходные строки>
<пропустить 1 строку>
Кол-во строк=<количество строк>
<пропустить 2 строки>
Символов v=<количество символов v>
Методические указания
Исходный файл данных создать в редакторе Блокнот.
Задание 2: работа с текстовыми файлами (контрольное)
Цель задания
Закрепление практических навыков работы с текстовыми файлами.
Постановка задачи
Задать текстовый файл input2.txt, содержащий несколько строк. Произвести указанные действия с файлами. Результаты заносятся в отдельный текстовый файл output2.txt обязательно с соответствующими заголовками и согласно формату, указанному в задании.
Методические указания
Исходный файл данных создать в редакторе Блокнот.
Варианты заданий
1 вариант.1. Определить количество слов в файле. Отступить две строки. 2. Определить, с какого символа начинается третья строка. Если файл содержит всего две строки, вывести сообщение об этом.
2 вариант.1. Определить количество строк в файле, вывести информацию в новый файл. Отступить в файле одну строку. 2. Определить, каким символом оканчивается четвертая строка, вывести его в файл, если файл содержит меньшее количество строк, вывести сообщение в новый файл.
3 вариант.1. Определить количество символов «о» в строках файла, если таких символов нет, вывести сообщение. Отступить три пустых строки. 2. Определить, сколько слов в третьей строке файла, если файл содержит меньшее количество строк, вывести сообщение в файл.
4 вариант.1. Убрать пробелы в строках и занести полученные строкив новый файл. Отступить одну строку. 2. Определить длину полученных строк. Каждое число вывести с новой строки.
5 вариант. 1. Заменить символ «а» на символ «о», переписать полученные строкив новый файл. Если такого символа нет в исходном файле, вывести об этом сообщение. Отступить 2 строки. 2. Вывести свою фамилию в файл.
6 вариант. 1. Переписать строкив новый файл, вставляя в начало каждой строки по одному пробелу. Отступить 3 строки. 2. Определить, с какого символа начинается второе слово в первой строке, если такого слова нет, вывести сообщение.
7 вариант.1. Записать строкииз исходного файла в новый в перевернутом виде. Отступить 3 строки. 2. Определить, сколько символов «.» содержит исходный файл, если таких нет, вывести сообщение.
8 вариант.1. Определить длину четвертой строкиисходного файла, если файл содержит меньшее количество строк, вывести сообщение об этом. Отступить 4 строки. 2. Вывести первую строку без первого символа.
9 вариант.1. Определить количество строк в исходном файле. 2. Если строка одна, переписать ее в новый файл так, чтобы на строке было по одному символу. Если строк больше, склеить их в одну строку.
10 вариант.1. Определить количество пробелов в исходном файле. 2. Если их количество четное, то вывести первую строку; если нечетное – вторую. Если пробелов нет или файл содержит всего одну строку, вывести сообщение об этом.
11 вариант.Дан текстовый файл. Переписать его содержимое в новый файл, обрезав длину исходных строк согласно числу, значение которого введено с клавиатуры.
12 вариант.Дан текстовый файл. В каждой строке перенести последний символ в начало строки.
Задание 3: обработка текстовых файлов, содержащих одномерные массивы (контрольное)
Цель задания
Освоение работы с текстовыми файлами для хранения и обработки одномерных массивов чисел.
Постановка задачи
Определить, сколько всего элементов содержится в текстовом файле input3.txt. Результат вывести в новый файл output3.txt.
Методические указания
1. Исходные данные задать как текстовый файл в экранном редакторе Блокнот. Данные целого типа находятся в первой строке файла через пробел.
2. Файл отчета должен содержать исходный массив с заголовком и результат решения:
massiv:
<элементы исходного массива в столбик>
<пустая строка>
<5 пробелов>itog=<количество элементов>
Задание 4: обработка текстовых файлов, содержащих одномерные массивы
Цель задания
Закрепление навыков работы с текстовыми файлами, использующимися для хранения одномерных массивов чисел.
Постановка задачи
Написать программу для обработки исходных файлов данных согласно индивидуальному варианту задания.
Методические указания
1. Исходные данные задать как текстовый файл в экранном редакторе Блокнот. Массив должен содержать как положительные, так и отрицательные элементы.
2. В первой строке содержится число, указывающее размер массива, элементы массива задаются через пробел, начиная со второй строки.
3. Файл отчета должен содержать исходный массив с заголовком и результат решения.
Варианты заданий
1 вариант. Определить количество положительных и отрицательных элементов в массиве. Отступить 2 строки. Вывести только положительные элементы и их сумму.
2 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 4 строки. Вывести только отрицательные элементы, расположенные до 4-го элемента включительно. Если таких нет, вывести сообщение.
3 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 1 строку. Вывести все элементы по абсолютной величине и их сумму от 3-го до 7 –го элемента. Если элементов в массиве меньше, вывести сообщение об этом.
4 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 3 строки. Вывести сумму элементов, имеющих четный порядковый номер. Если она равна нулю, вывести в виде сообщения.
5 вариант. Определить количество положительных и отрицательных элементов в массиве. Отступить 2 строки. Вывести набор тех чисел, чье количество больше. Если их одинаковое количество, вывести соответствующее сообщение.
6 вариант. Определить количество положительных и отрицательных элементов в массиве. Отступить 5 строк. Вывести только отрицательные элементы и их среднее арифметическое значение.
7 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 4 строки. Вывести элементы по абсолютной величине превосходящие число 5. Если таких нет, вывести сообщение об этом.
8 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 2 строки. Вывести только положительные элементы, расположенные между 3-им и 8-м элементами. Если таких элементов нет или массив содержит меньшее количество элементов, вывести сообщение.
9 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 3 строки. Вывести их сумму. Отступить 2 строки. Разделить каждый элемент на сумму, занести полученные значения в файл. Если она равна нулю, вывести сообщение об этом.
10 вариант.Определить количество положительных и отрицательных элементов в массиве. Отступить 1 строку. Определить сумму положительных элементов. Отступить 1 строку. Определить количество отрицательных элементов, по абсолютной величине меньших числа 3. Если таких элементов нет, вывести сообщение об этом.
11 вариант. Определить количество отрицательных и положительных элементов в массиве. Отступить 6 строк. Вывести только положительных элементы и их среднее арифметическое значение.
12 вариант.Определить количество отрицательных и положительных элементов в массиве. Отступить 2 строки. Вывести элементы по абсолютной величине превосходящие число 9. Если таких нет, вывести сообщение об этом.
Задание 5: обработка текстовых файлов, содержащих матрицы (контрольное)
Цель задания
Получение навыков работы с текстовыми файлами для хранения и обработки двумерных массивов чисел.
Постановка задачи
1. Создать программу, которая создает текстовый файл, содержащий матрицу размера . Первая строка файла содержит размерность. Элементы матрицы – целые числа в интервале располагаются по строкам, начиная со второй строкифайла.
2. Написать программу, которая определяет минимум первой строкиматрицы и максимум последней строки.
Методические указания
1. Первая программа использует: матрицу , элементы которой задаются случайным образом; текстовый файл, в котором первая строка содержит два числа – Размерность матрицы, а элементы матрицы записаны, начиная со второй строки, в виде таблицы (стандартное отображение матрицы) (см. пример 3).
2. Вторая программа считывает данные из файла, используя переменную типа двумерный массивс элементами целого типа. Результат выводится на экран.
Задание 6: обработка текстовых файлов, содержащих матрицы
Цель задания
Закрепление навыков работы с текстовыми файлами для хранения и обработки двумерных массивов чисел.
Постановка задачи
1. Создать программу для задания исходных данных.
2. Написать программу для обработки исходных файлов данных.
Методические указания
1. Исходные данные задать как текстовый файл в экранном редакторе Блокнот.
2. Обработку вести, используя переменную типа, указанного в задании.
Варианты заданий
1 вариант.В данной действительной квадратной матрице порядка N найти наименьший элемент. Получить квадратную матрицу порядка N-1 путем выбрасывания из исходной матрицы строкии столбца, на пересечении которых расположен элемент с найденным значением.
2 вариант.В данной целочисленной матрице найти максимум и образовать новую матрицу по правилу: строка с максимальным элементом должна быть первой в матрице, остальные строкисмещаются вниз.
3 вариант.Даны целочисленная матрицаразмера N x M, целые числа k, t (1£ k £N, 1£ t £N, k ¹ t). Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером t, сохранив порядок следования остальных строк.
4 вариант.Даны действительная матрицаразмера N x M (N < M) и вектор размерности M. Преобразовать матрицу в квадратную по правилу: вектор должен следовать за строкой, в которой находится минимальный элемент.
5 вариант.Дана действительная матрицапорядка N. Преобразовать матрицу по правилу: строку с номером d сделать столбцом с номером s, номера задавать с клавиатуры.
6 вариант.Из данной действительной матрицы получить нормированную, путем деления всех элементов на значение максимального элемента.
7 вариант.Даны квадратная матрицапорядка N и вектор порядка N. Сравнить построчно элементы матрицы с вектором. Если есть строка, совпадающая с вектором по двум первым элементам, то заменить ее вектором, если таковой не окажется, то обнулить вектор.
8 вариант.Даны квадратная матрицапорядка N и вектор порядка N. Заменить элементами вектора элементы того столбца матрицы, который содержит элемент, введенный с клавиатуры.
9 вариант.Дана действительная квадратная матрицапорядка N. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
10 вариант.В данной действительной квадратной матрице порядка N найти наибольший элемент. Получить квадратную матрицу порядка N-1 путем выбрасывания из исходной матрицы строкии столбца, на пересечении которых расположен элемент с найденным значением.
11 вариант.Даны квадратная матрицапорядка N и вектор порядка N. Заменить элементы той строкиматрицы элементами вектора, которая содержит элемент, введенный с клавиатуры.
12 вариант.В данной целочисленной матрице найти минимум и образовать новую матрицу по правилу: столбец с минимальным элементом должен быть первым в матрице, остальные столбцы смещаются вправо.