Запись массива в файл

На этом примере показано как с помощью процедуры выполнять запись данных из массива в файл и затем читать из файла в массив.
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.
Онлайн всего: 11
Гостей: 11
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте