Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Одномерные массивы. Описание, ввод, вывод и обработка массивов на Паскале | Решение типовых задач на массивы | Двойной цикл и типовые задачи на двойной цикл | Оператор безусловного перехода | Матрицы и типовые алгоритмы обработки матриц | Массивы в качестве параметров подпрограммы | Открытые массивы | Множества и перечислимые типы | Работа с символами | Работа со строками |


Читайте также:
  1. C 4 redo группами по 2 файла, 2 control-файлами, табличным пространством system, имеющим 2 файла данных по 50 мб
  2. D.1. Примеры уязвимостей
  3. I. Задания для самостоятельной работы
  4. I. Задания для самостоятельной работы
  5. I. Задания для самостоятельной работы
  6. I. Задания для самостоятельной работы
  7. I. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

1. Чтение числовых данных из файла. Массив данных имеет фиксированную размерность, примем ее равной 5.

var f,w:text;

a: array [1..5] of integer; i:integer;

begin

assign (f,'data.txt');

reset (f);

for i:=1 to 5 do read (f, a[i]);

close (f);

assign (w, 'result.dat');

rewrite (w);

writeln (w,'Результаты:');

for i:=1 to 5 do

writeln (w,a[i]:5,sqr(a[i]):5);

close(w); end.

Файл с именем data.txt может быть, например, таким:

1 2 3

4 5

Файл результатов result.dat будет таким:

Результаты:

1 1

2 4

3 9

4 16

5 25

2. Просмотр любого текстового файла на экране. По заполнении экрана до 24 строк программа делает паузу.

var f:text; s:string; count:integer;

begin

repeat

write ('Имя файла или 0 для выхода: ');

readln (s);

if s='0' then halt;

assign (f,s);

{$I-}reset (f);{$I+}

if IoResult<>0 then begin

writeln ('Не могу открыть файл ',s);

write ('Нажмите Enter для продолжения');

readln;

continue; {повторяем цикл с начала}

end;

count:=1;

while not eof(f) do begin

readln (f,s);

writeln (s);

count:=count+1;

if count=24 then begin

count:=1;

write('Нажмите Enter для продолжения');

readln;

end;

end;

write ('Нажмите Enter для нового ввода');

readln;

close (f);

until false;

end.

Строка s здесь используется как для ввода имени файла, так и для чтения строки файла -- ведь после выполнения связывания оператором assign имя файла нам больше не нужно. Обратите внимание также на оператор continue, в данном случае он позволяет не завершать выполнение программы после неверного ввода пользователя.

3. Работаем со "смешанным" файлом данных, строки которого содержат значения разных типов.

Пусть файл data.txt имеет следующий вид:

Иванов 2

Петров 1

Сидоров 3

Попов 2

...

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

Напишем программу для вывода фамилий всех работников выбранного участка и подсчета их количества.

var f:text; s,fam:string;

u,uch,p,kol,i:integer;

begin

writeln ('Участок?'); read (uch);

assign (f,'data.txt'); reset (f);

kol:=0;

while not eof (f) do begin

readln (f,s);

p:=pos(' ',s);

if p>0 then begin

fam:=copy (s,1,p-1);

delete (s,1,p);

val (s,u,i);

if i<>0 then begin

writeln ('Ошибка в числе ',s,

' – нет номера участка');

halt;

end;

if u=uch then begin

{подсчет рабочих на участке}

writeln (fam);

kol:=kol+1;

end;

end

else begin

writeln ('Ошибка в строке ',s,

' – нет пробела');

halt;

end;

end;

close (f);

writeln ('kol=',kol);

end.

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

while not eof (f) do begin

readln (f,fam);

readln (f,u);

if (u=uch) then begin

{ обработка }

end;

end;

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

 


Дата добавления: 2015-11-16; просмотров: 41 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Общие операции| Записи. Бинарные файлы

mybiblioteka.su - 2015-2024 год. (0.007 сек.)