Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab9m06.pdf
Скачиваний:
7
Добавлен:
23.03.2015
Размер:
191.61 Кб
Скачать

Лабораторная работа № 9 Обработка файлов

1. Общие сведения

Для выполнения лабораторной работы необходимо изучить теоретический материал по следующим разделам:

1)файлы, объявление файлов;

2)виды файлов, организация файлов различных видов;

3)стандартные процедуры для работы с файлами.

2.Задание

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

3. Требования к выполнению задания

При решении задач необходимо придерживаться следующих основных требований:

1)исходные данные, необходимые для работы программы, следует разместить в типизированных файлах, тип которых соответствует типу компонент, обусловленному условиями задачи;

2)файлы, содержащие исходные данные, необходимо создавать с помощью вспомогательной программы;

3)при разработке программы следует выделить отдельные подзадачи решаемой задачи и реализовать их решение с помощью подпрограмм;

4)в программе запрещается чтение всех данных из исходного файла и размещение их в массиве;

5)при необходимости разрешается создание любого числа вспомогательных файлов;

6)в программе запрещается использование следующих встроенных подпрограмм языка Турбо-

Паскаль: SEEK, FILESIZE, FILEPOS.

7)для проверки работоспособности программы необходимо разработать и выполнить соответствующие тесты, которые должны предъявляться при сдаче задания;

8)исходные данные и результаты работы программы должны выводиться на печать;

9)оформление программ должно соответствовать "Общим требованиям к оформлению программ". Неправильно оформленные программы не рассматриваются.

4.Примечания

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

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

Всвязи с этим, выполняя задание, необходимо ограничиться считыванием из файла от нескольких (обычно от одной до трех) компонент с постепенной заменой их на следующие компоненты, находящиеся на диске.

Вусловиях заданий использовались следующие термины:

Текст – произвольная последовательность символов, которая может содержать пробелы и знаки препинания. Пробелы разбивают текст на слова. Знаки препинания разбивают текст на предложения.

Знак препинания – символ точки.

Слово – последовательность символов, не содержащая пробелов.

Серия – последовательность, содержащая более двух одинаковых символов.

5. Пример выполнения задания

Задание

Дан файл f, компонентами которого являются целые числа. Составить программу, которая ищет в файле подпоследовательности целых чисел, образующих арифметическую прогрессию, и определяет их длину. Подпоследовательности переписываются в файл g в порядке их следования, а их длины – в файл k.

{Автор: Иванов И.И.} {Группа: ФФ-111} {Тема: Работа с файлами} { Основная прграмма.} program Lab9;

type

FInt=file of integer;

procedure PrintFile(var F:FInt); var

X:integer; begin

reset(F);

while not eof(F) do begin read(F,X);

write(' ',X:4); end;

writeln; end;

var

F,G,H,K:FInt;

A1,A2,A3,D12,D23:integer;

X,N:integer;

L:boolean; begin

assign(F,'In.dat');

assign(G,'Out.dat');

assign(H,'H.dat');

assign(K,'Num.dat'); writeln(' Исходный файл'); PrintFile(F);

reset(F);

rewrite(G);

rewrite(H);

rewrite(K);

if eof(F) then halt else begin

read(F,A2);

if eof(F) then halt else read(F,A3)

end;

Тесты

N:=0; D12:=A3-A2;

while not eof(f) do begin repeat

A1:=A2;

A2:=A3;

read(f,A3); D23:=A3-A2; L:=D12=D23; if L then begin

write(H,A1);

N:=N+1; end; D12:=D23;

until not L or eof(F); if eof(F) then

if L then begin

A1:=A2;

A2:=A3; end;

if N>0 then begin write(H,A1); write(H,A2); N:=N+2; write(K,N); N:=0;

end; reset(H);

while not eof(H) do begin read(H,X);

write(G,X); end; rewrite(H);

end;

writeln(' Арифметические прогрессии');

PrintFile(G); writeln(' Длина

последовательностей'); PrintFile(K);

end.

1.Исходный файл пуст. Ожидаемый результат – печать пустого файла.

2.Исходный файл содержит меньше трех чисел. Ожидаемый результат – печать содержимого файла.

3.Исходный файл содержит числа 1 0 1 0 Ожидаемый результат – печать содержимого файла и пустых последовательностей.

4.Исходный файл содержит числа 1 2 3 4 8 10 12 14 15 5 8 11 2. Ожидаемый результат – печать содержимого файла, прогрессии: 1 2 3 4 8 10 12 14 5 8 11 – и значения длин: 4 4 3.

5.Исходный файл содержит числа 1 2 3 4 5. Ожидаемый результат – печать содержимого файла, прогрессии: 1 2 3 4 5 – и значения длин: 5.

{Автор: Иванов И.И.}

write(' N= ');

{Группа: ФФ-111}

readln(N);

{Тема: Работа с файлами.}

for I:=1 to N do begin

{Подготовка исходного файла}

read(X);

program Lab9;

write(F,X)

var

end;

F:file of integer;

close(F)

X,I,N:integer;

end.

begin

 

assign(F,'In.dat');

 

rewrite(F);

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]