Примеры работы с текстовыми файлами

Пример 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 вариант.В данной целочисленной матрице найти минимум и образовать новую матрицу по правилу: столбец с минимальным элементом должен быть первым в матрице, остальные столбцы смещаются вправо.