Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_учебник_3.doc
Скачиваний:
33
Добавлен:
11.04.2015
Размер:
937.47 Кб
Скачать

Пример 1

1) Ввести двухмерный массив X(5,3) и записать его в файл Z.TXT.

2) Все элементы массива X увеличить в два раза (массив считать из файла Z.TXT). Если последний элемент массива X53=0, то в конец файла добавить еще один элемент: -1.

Решение

1) Var

X:real;

f:text; {f – файловая переменная}

j,i:integer;

Begin

ASSIGN(f,'z.txt'); {назначение, соответствие}

REWRITE(f); {создаем файл для записи}

for i:=1 to 5 do {Можно сделать так: }

for j:=1 to 3 do { for i:= 1 to 15 do }

begin

read(x);

writeLN(f,x) {Запись в файл}

end;

CLOSE(f) {Закрытие, фиксирование}

End.

2) Var

x: array [1..5,1..3] of real;

f:text;

i,j:integer;

Begin

assign(f,'z.txt');

RESET(f); {открываем файл для чтения}

for i:= 1 to 5 do

for j:= 1 to 3 do

begin

read(f,x[i,j]);

x[i,j]:=2*x[i,j]

end;

{ Мы сейчас находимся в конце файла, значит, можно добавлять в файл записи }

if x[5,3]=0 then writeln(f,-1);

{ Добавим к условию задачи следующее:

’ дописать в файл новую матрицу после старой ’, т.е. в файле наша матрица будет записана два раза подряд }

for i:=1 to 5 do

for j:= 1 to 3 do

writeln(f,x[i,j]);

if x[5,3]=0 then writeln(f,-1);

close(f)

End.

B этом примере первую часть можно было оформить так:

Type

M=array[1..5,1..3] of real;

Var

x:M;

i,j:integer;

f:file of M;

Begin

for i:=1 to 5 do

for j:=1 to 3 do

read(x[i,j]);

ASSIGN(f,'z.txt');

REWRITE(f);

{ Так как f – файловая переменная, т.е. файл записей, в котором каждая запись представляет собой массив, сразу можно записать в файл весь массив }

write(f,x); { массив записывается целиком процедурой WRITE }

CLOSE(f)

End.

Если файловая переменная объявлена как файл (file of) типа массив, то каждая запись файла содержит массив, описанный в типе, т.е. каждая процедура write (read) записывает (считывает) в (из) файл(а) за одно обращение один массив.

Переменные строкового типа хранят в файле, описанном как

f:text;

Пример 2

Считать все данные вещественного типа из файла u.txt типа text и записать их в одномерный массив х.

Решение

Var

f:text;

x:array [1..100] of real;

i:integer;

Begin

ASSIGN(f,'u.txt');

RESET(f);

i:=0;

while not eof(f) do

begin

i:=i+1;

readln(f,x[i]);

writeln(i,' ',x[i])

end;

CLOSE(f)

End.

Пример 3

Считать массив X из файла z.txt, описанный как file of двухмерный массив вещественных чисел. При необходимости заменить некоторые значения элементов массива с экрана и записать измененный массив обратно в файл.

Решение

Type

mas = array [1..5,1..3] of real;

Var

x:mas;

f:file of mas;

i,j,k:integer;

st:string;

Begin

assign(f,'z.txt');

reset(f);

read(f,x); {Считывание массива X из файла z.txt}

writeln('Выведем поэлементно массив Х');

writeln('Замените массив Х');

writeln('Если данные не хотите изменять,',

' нажмите <Enter>');

for i:=1 to 5 do

for j:=1 to 3 do

begin

write('x[',i,',',j,']=',x[i,j],'/');

readln(st);

if st<>'' then val(st,x[i,j],k) {преобразование строки в число}

end;

seek(f,0); {встали в начало файла}

write(f,x); {записали массив X в файл z.txt}

close(f);

End.

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