Работа N 6. Работа с файлами

Под файлом понимают любой набор данных. В практике программ- ования часто встречаются задачи, при решении которых удобно хранить обрабатываемые данные на внешнем носителе. В этом случае данные оформляются в виде внешних файлов. В языке Pascal файл представляет собой последовательность элементов одного типа. Файловый тип данных состоит из линейной последовательности компонент, которые в свою очередь могут иметь любой тип за исключением файлового или структурного типа, содержащего компоненту с файловым типом. В отличие от массивов длина файла, т.е. количество элементов, не задается, место элемента не определяется индексом и каждый элемент становится доступным только после перебора всех предыдущих элементов.

Переменную файлового типа можно задать, например, следующим образом:

 

< идентификатор> file of <тип>

 

Например:

Var FT : File of Char;

FileInp : File of Real;

FileOut : Text;

Действия с файлами могут быть разнообразными: иногда требуется читать данные из файла и записывать их в другой файл, иногда корректировать один и тот же файл. В программе по мере необходимости указывабтся операторы для чтения и записи файлов, а также для их закрытия.

 

Haпример:

Program File_Example;

Var F1 : File of Integer { входной файл }

F2 : Text { файл для вывода }

R : Integer;

st : String;

. . . .

Begin

Assign(F1, 'FileInp.dat');

Assign(F2, 'FileOut.dat');

Reset(F1); { Открытие файла F1 }

Rewrite(F2); { Открытие файла F2 }

.. .. .. ..

Read(F1,R); { Чтение из файла F1 }

 

.. .. .. ..

Writeln(F2, St); { Запись в файл F2 }

 

.. .. .. ..

Close(F1); { Закрытие файлов }

Close(F2);

end.

Целью данной работы является получение практических навыков использования файловых структур данных.

Задание. Напишите программу решения задачи, с использованием операций над файлами.

 

Варианты заданий.

1. Дан символьный файл F. Получить файл G, образованный из F заменой всех его прописных (больших) букв одноименными строчными (малыми).

 

2. Дан файл F, компоненты которого являются целыми числами. Получить файл G, образованный из файла F исключением повторных вхождений одного и того же числа.

 

3. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл F содержит столько же отрицательных чисел, сколько положительных. Используя вспомогательный файл H, переписать компоненты файла F в файл G так, чтобы в файле G не было двух соседних компонент с одним знаком.

 

4. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл F содержит столько же отрицательных чисел, сколько положительных. Используя вспомогательный файл H, переписать компоненты файла F в файл G так, чтобы в файле G сначала шли положительные, потом отрицательные числа.

 

5. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл F содержит столько же отрицательных чисел, сколько положительных. Используя вспомогательный файл H, переписать компоненты файла F в файл G так, чтобы в файле G числа шли в следующем порядке: два положительных, два отрицательных, два положительных, два отрицательных и т.д. ( предполагается, что число компонент в файле делится на 4).

 

6. Дан символьный файл F. Предполагается, что число слов делится на 100. Подготовить файл для печати в две колонки по 50 строк на странице. Слова должны быть расположены в файле G в следующем порядке: 1-е слово, 51-е слово, 2-е слово, 52-е слово,...50-е слово, 100-е слово, затем (следующая страница) 101-е слово, 151-е слово, 102-е слово, 152-е слово,..., 150-е слово, 200-е слово и т.д.

 

7. Дан символьный файл, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу: фамилия имя отчество, фамилия имя отчество, ... . Записать эти сведения в новом файле используя образец имя отчество фамилия.

 

8. Дан символьный файл, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу: фамилия имя отчество, фамилия имя отчество, ... . Записать эти сведения в новом файле используя образец фамилия и.о.

 

9. Дан символьный файл, содержащий произвольный текст длиной более 5000 слов. Слова в тексте разделены пробелами и знаками препинания. Получить 100 наиболее часто встречающихся слов и число из появлений.

 

10. Даны два символьных файла F1 и F2. Файл F1 содержит произвольный текст. Слова в этом тексте разделены пробелами и знаками препинания. Файл F2 содержит не более 40 слов, которые разделены запятыми. Эти слова образуют пары: каждое первое слово считается заменяемым, каждое второе слово - заменяющим. Найти в файле F1 все заменяемые слова и заменить их на соответствующие заменяющие. Результат поместить в файле G.

 

11. Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий сведения об учениках школы. Выяснить, имеются ли в школе однофамильцы, имеются ли однофамильцы в каком-нибудь классе.

 

12. Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий сведения об учениках школы. Выяснить, на сколько человек отличается число учеников в восьмых классах от числа учеников в десятых классах.

 

13. Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий сведения об учениках школы. Получить список учеников данного класса по образцу: фамилия имя.

 

14. Задан символьный файл, содержащий текст. Разбить этот текст на строки длиной не более 40 символов. Перенос на новую строку осуществлять на месте пробела (слова не переносить).

 

15. Задан символьный файл, содержащий текст. Строки текста содержат не более 50 символов. Равномерно вставить пробелы между словами, чтобы его длина составляла ровно 50 символов.

 

16. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна 0. Числа в файле идут в следующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать компоненты файла F в файл G так, чтобы в файле G числа шли в следующем порядке: пять положительных, пять отрицательных и т.д.

 

16. Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла не равна 0. Числа в файле идут в следующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать компоненты файла F в файл G так, чтобы в файле G числа шли в следующем порядке: двадцать положительных, двадцать отрицательных и т.д. (предполагается, что число компонент файла делится на 40).

 

17. Дан файл F, компоненты которого являются целыми числами. Записать в файл G наибольшее значение из первых 20 компонент, затем - следующих 20 компонент и т.д. Если в последней группе окажется менее 20 компонент, то последняя компонента файла G должна быть равна наибольшей из компонент файла F, образующих последнюю группу.

 

18. Дан текстовый файл. Удалить из файла лишние пробелы.

 

19. Дан текстовый файл. Найти самое длинное слово среди слов, вторая буква которых есть е. Если таких слов нет вообще, то сообщить об этом.

 

21. Даны символьные файлы F, G. Определить, совпадают ли компоненты файла F с компонентами файла G. Если нет, то получить номер первой компоненты, в которой файлы F и G отличаются между собой. В случае, когда один из файлов имеет N компонент (N>0) и повторяет начало другого (более длинного) файла, ответом должно быть число N+1.

 

Варианты заданий для лабораторных работ

Работа N 1. Разветвления  
Вариант задание

 

Работа N 2. Циклы.    
Вариант задание

 

Работа N 3. Обработка массивов.  
Вариант задание

 

Работа N4. Работа с матрицами  
Вариант задание

 

Работа N 5. Обработка текстовых данных  
Вариант задание

 

Работа N 6. Работа с файлами  
Вариант задание