
Информатика_всем
.pdf





210 |
8.6 Компонентные файлы и массивы |
матрицы, то при ее формировании возникает множество вопросов: «А действительно ли в файле содержится матрица?», «В какой именно части файла она содержится?», «Может можно сформировать матрицу только из начальных элементов матрицы?». Рассмотрим случай формирования матрицы A размером N×M из файла F:
reset(F);
if fileSize(F) >= N*M then begin
for i:=1 to N do for j:=1 to M do
begin read(F,buf); A[i,j]:=buf;
end;
end else
begin
writeln(‘В файле F недостаточно компонент’); writeln(‘в файле: ’, FileSize(F),’ компонент’); writeln(‘в матрице: ’, N*M ,’ ‘элементов’);
end;
Для иллюстрации одновременной работы с файлами и массивами рассмотрим решение нескольких задач. Пусть, например, нужно переписать из двумерного массива A в файл F элементы в последовательности изображенной ниже, т.е. «по змейке».
15 52 12 2
96 1 0 -56
A =
-8 36 41 -10
23 -45 0 |
70 |
в результате получается файл F:
0 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|||||||||||||||||||||||||||||
|
|
15 |
|
|
96 |
|
|
-8 |
|
|
23 |
|
|
-45 |
|
36 |
|
|
1 |
|
52 |
|
|
12 |
|
|
0 |
|
|
|
41 |
|
|
0 |
|
|
70 |
|
|
-10 |
|
-56 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


|
|
|
|
|
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8.6 Компонентные файлы и массивы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
Исходный файл F: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
0 |
1 |
|
2 |
|
|
|
|
3 |
|
|
4 |
5 |
6 |
7 |
8 |
9 |
|
|
|
|
10 |
|
|
11 |
12 |
|
|
13 |
14 |
|
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
3 |
|
|
4 |
|
|
15 |
|
|
-34 |
|
|
|
12 |
|
2 |
|
50 |
|
|
1 |
|
0 |
|
|
-9 |
|
|
|
-3 |
|
|
|
36 |
|
|
41 |
|
|
|
-10 |
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
Матрица до нормировки: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Матрица после нормировки: |
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
15 |
|
|
-34 |
|
|
|
|
|
12 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
0.30 |
|
-0.68 |
|
0.24 |
|
|
0.04 |
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
50 |
|
|
1 |
|
|
|
|
|
|
0 |
|
|
-9 |
|
|
|
|
|
|
|
|
|
|
|
1.00 |
|
0.02 |
|
|
0.00 |
|
|
-0.18 |
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
-8 |
|
|
36 |
|
|
|
|
|
|
41 |
|
|
-10 |
|
Max = 50 |
|
|
|
|
|
-0.06 |
|
-0.72 |
|
0.82 |
|
|
-0.20 |
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Нормированная матрица, занесенная обратно в файл F: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
0 |
|
|
|
1 |
|
|
|
2 |
|
|
3 |
4 |
|
|
5 |
|
6 |
7 |
|
8 |
|
|
|
|
9 |
|
10 |
|
|
|
11 |
|
|
12 |
|
|
13 |
14 |
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
3.00 |
|
4.00 |
|
0.30 |
|
-0.68 |
|
0.24 |
|
0.04 |
|
1.00 |
|
|
0.02 |
|
|
0.00 |
|
|
-0.18 |
|
|
-0.16 |
|
-0.72 |
|
0.82 |
|
|
|
-0.20 |
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Вектор B: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
3.00 |
|
4.00 |
|
0.30 |
|
|
|
0.24 |
|
|
0.04 |
1.00 |
0.02 |
|
|
0.82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 8.19 Тестовый пример к задаче
Блок-схема основной программы и всех процедур представлены на рис. 7.20 – 7.23.
По блок-схеме составим программу. program Files_3;
type Tfl = file of real;
T2mx = array[1..10, 1..10] of real; T1mas = array[1..100] of real;
var F: Tfl;
A:T2mx;
B:T1mas; Na,Ma,K: byte;
{******Процедура ввода файла*******}
procedure InputFile(var X:Tfl; const Name:char); var i,N,M: byte;
buf: real; begin
rewrite(X);
writeLn('N, M равны :'); readLn(N,M);
while (N<1) or (M<1) do begin
writeLn('N и M должны быть положительными'); writeLn('N, M равны :');
readLn(N,M);
end;
write(X,N,M);

