Запись массива в файл
На этом примере показано как с помощью процедуры выполнять запись данных из массива в файл и затем читать из файла в массив.
program wwod_wywod_matrica_file;
uses crt;
const
{Размерность квадратной матрицы n, можно изменить}
n=10;
type
vector = array[1..n] of real;
matrica= array[1..n] of vector;
var
A,B: matrica;
i,j : integer;
{Процедура с парметрами:помещает массив arr типа matrica
в текстовый файл c именем name
строкового типа; p,q - целого типа, определяют формат записи p:q
общее число знаков p, число знаков после дес. точки q}
procedure matrica_v_file(name:string; p,q:word;arr:matrica);
var f : text; i,j : integer;
begin
{установление соответствия между именем файла в программе и именем
файла в файловой системе}
assign(f,name);
{открытие файла на запись}
rewrite(f);
{поэлементная, по строкам, перезапись из массива в файл}
for i := 1 to n do
begin
{формат ввода arr[i,j] в файл f - p:q, затем пробел в качестве
разделителя}
for j := 1 to n do write(f,arr[i,j]:p:q,' ');
{переход на следующую строку в файле f}
writeln(f)
end;
{закрытие файла}
close(f);
end;
{Запись из файла в с именем name в массив с именем arr,
существенно, что массив типа переменная (var)}
procedure file_v_matricu(name:string; var arr:matrica);
var f : text;
i,j : integer;
begin
assign(f,name);
{открытие файла на чтение}
reset(f);
for i := 1 to n do
begin
{чтение из файла в массив}
for j := 1 to n do read(f,arr[i,j]);
readln(f);
end;
close(f);
end;
Begin
clrscr;
{Заполнение матрицы (массива чисел) A[i,j]
с помощью датчика случайных чисел}
randomize;
for i := 1 to n do
for j := 1 to n do
{Масcив n-квадрат случайных чисел от 1 до n*n}
A[i,j] :=1+random(n*n);
{запись матрицы A в файл с именем, указанным между апострофами,
в случае необходимости можно изменить, в формате 4:0; проверьте
наличие указанного файла (если не было, то появился)}
matrica_v_file('d:\matrica.txt',4,0,A);
{если имя файла отсутствует, то есть ' ', то массив A будет
выведен на экран, пармаметры 4 и 0 задают формат вывода 4:0}
matrica_v_file('',4,0,A);
writeln;readln;
{ввод из файла,указанного между апострофами, в массив B }
file_v_matricu('d:\matrica.txt',B);
{вывод массива B (те же самые числа) на экран, другой формат
вывода 5:1}
matrica_v_file('',5,1,B);
readln
End.