Практическое занятие № 8

ТЕМА: Создание программ по работе с текстовыми файлами

ЦЕЛЬ РАБОТЫ: получить практические навыки по использованию текстовых файлов в программах на TURBO PASCAL

ХОД РАБОТЫ

 

Пример 1. Записать в файл натуральные числа (1, 2, 3 …до n), затем их считать из файла и отобразить на экране.

 

Дополните код:

var

   f: text;

   i,n,a:integer;

begin

{устанавливаем связь файловой переменной с физическим файлом на диске}

assign(f,'file1.txt');

{открываем файл для записи}

rewrite(f);

{запрашиваем у пользователя количество чисел n}

    ...

for i:=1 to n do

{записываем в файл значение переменной i, отделяя числа друг от друга пробелом}

    Write(f, i, ‘ ’);

{закрываем файл}

close(f);

{открываем файл для чтения}

reset(f);

{Для чтения из текстового файла используем цикл по условию «пока не достигнут конец файла»}

while not eof(f) do

begin

{считываем из файла очередное число в переменную a}

    ...

{выводим значение переменной a на экран}

    ...

end;

{закрываем файл}

close(f);

end.

 

Пример 2. Даны целые положительные числа N и K. Создать текстовый файл и записать в него N строк, каждая из которых состоит из K символов «*» (звездочка).

 

Пример 3. Дана строка S и текстовый файл. Добавить строку S в конец файла. Проверить правильность добавления строки.

 

Пример 4. В текстовом файле f1.txt через пробел и записаны целые числа. Переписать в файл f2.txt из файла f1.txt все числа, за исключением максимальных (предполагается, что их может быть несколько).

Указание: в папке с программой создайте текстовый файл с именем f1.txt. Внесите в него целые числа, отделяя их друг от друга пробелом. Сохраните изменения и закройте файл.

 

var f1,f2: Text;

    a,max: integer;

begin

{устанавливаем связь файловой переменной с физическим файлом на диске}

  Assign(f1,'f1.txt');

{открываем файл для чтения}

  Reset(f1);

{пока не достигнут конец файла}

  while not Eof(f1) do

  begin

    {считываем из файла очередное число в переменную a}

    Read(f1,a);

    {если число из переменной a больше, чем максимальное значение}

    if a>max then

    {меняем максимальное значение на число a}

      max := a;

  end;

  writeln(‘Максимальное значение = ’, max);

{устанавливаем связь второй файловой переменной с физическим файлом на диске}

  Assign(f2,'f2.txt');

  {открываем второй файл для записи}

  Rewrite(f2);

  {открываем первый файл для чтения}

  Reset(f1);

  {пока не достигнут конец первого файла}

  while not Eof(f1) do

  begin

    {считываем из первого файла очередное число в переменную a}

    Read(f1,a);

    {если число из переменной a не равно максимальному значению}

    if a<>max then

      {записываем число a во второй файл}

      WriteLn(f2,a);

  end;

  {закрываем файлы}

  Close(f1);

  Close(f2);

end.

 

Пример 5. Дано целое число K и текстовый файл. Удалить из файла строку с номером K. Если строки с таким номером нет, то оставить файл без изменений.

Указание: Действие удаление из файла предполагает, что имеется начальный файл, из которого вы перепишете все строки, кроме строки с номером K, в новый файл. Затем закроете оба файла. Начальный файл удалите, а новый файл переименуете в имя начального файла.

 

Пример 6. В файле input.txt записаны числа (каждое — с новой строки), их количество не превышает 100. Необходимо переписать числа в массив и вывести массив на экран.

Указания:

·                    объявляем массив для 100 элементов;

·                    открываем файл для чтения, просчитываем количество чисел, заполняя массив, сохраняем количество в N;

·                    выводим элементы массива на экран.

 

Дополните код:

var A: array[1..100] of integer;

    f: text;

    N, i: integer;

{ Определяем функцию, считывающую числа из файла, и

записывающую их в массив. Функция возвращает количество элементов массива: }

function ReadFromFile: integer;

var i: integer;

begin

assign(f, 'input.txt');

...;{ открытие файла в режиме чтения }

i := 0;

while (...) do begin

   i := i + 1;

   readln(...,...);  

close(f);   

ReadFromFile := i;

end;

 

{ Основная программа }

Begin

   N := ReadFromFile ;

{ вывод элементов массива на экран }

...;

end.

 

Пример 7. В файле input.txt записаны числа в строку, их количество не превышает 100. Необходимо найти максимальное и минимальное число и записать их в файл output.txt.

 

Решить самостоятельно:

1. Получить файл g, состоящий из строк файла f, содержащих заданную строку S.

 

2. Получить файл g, в котором текст выровнен по правому краю путем равномерного добавления пробелов.

 

3. Из файла f выбрать все числа (целые и вещественные) и записать их в файл g через пробел.

 

4. Определить, симметричен ли текст в файле f.

 

5. Текстовый файл содержит записи о телефонах и их владельцах. Переписать в другой файл телефоны тех владельцев, фамилии которых начинаются с букв К и С.

 

6. Текстовый файл содержит квадратную матрицу, которая записана по принципу: одна строка файла – одна строка матрицы. Необходимо построить двухмерный массив и вывести на экран исходную матрицу и результат ее транспонирования.

 

7. Дан текстовый файл со статистикой посещения сайта за неделю. Каждая строка содержит ip адрес, время и название дня недели (например, 139.18.150.126 23:12:44 sunday). Создайте новый текстовый файл, который бы содержал список ip без повторений из первого файла. Для каждого ip укажите количество посещений в неделю, наиболее популярный день недели, наиболее популярный отрезок времени длиной в один час. Последней строкой в файле добавьте наиболее популярный отрезок времени в сутках длиной один час в целом для сайта.