Считать матрицу из файла, используя динамический массив - Free Pascal
Формулировка задачи:
Здравствуйте, не могу найти ошибку, помогите, кому несложно. Задание: считать матрицу из файла, используя динамический массив.
Type
mat = Array [1..1,1..1] of integer;
Var
x: ^mat;
i,j,n,m,buf: integer;
F:file of integer;
BEGIN
{считываем из файла кол-во строк и кол-во столбцов}
assign(f,'D:\\file.txt');
reset(f);
read(f,n);
read(f,m);
{выделяем память}
GetMem(x,m*n*SizeOf(integer));
{создаем массив чтением из файла}
For i:=1 to n do
begin
For j:=1 to m do
begin
read(f,buf);
x^[i,j]:=buf;
write(x^[i,j]:4);
end;
Writeln
end;
FreeMem(x,n*m*SizeOf(integer));
close(F);
Readln;
END.Решение задачи: «Считать матрицу из файла, используя динамический массив»
textual
Листинг программы
GetMem(x, n*SizeOf(PRow));
Объяснение кода листинга программы
- Объявлена переменная x типа PRow, которая будет использоваться как указатель на начало динамического массива
- Выполняется функция GetMem, которая выделяет память под динамический массив размером n*SizeOf(PRow) байтов
- В случае успешного выделения памяти, переменная x будет содержать адрес первого элемента массива
- Если память не может быть выделена, то переменная x будет равна nil, и выполнение программы прекратится
- Выполняется функция FileOpen, которая открывает файл для чтения
- Если файл успешно открыт, то переменная f будет содержать дескриптор файла
- Если файл не может быть открыт, то переменная f будет равна nil, и выполнение программы прекратится
- Используя цикл, происходит чтение матрицы из файла
- Каждый элемент матрицы сохраняется в динамическом массиве
- После завершения чтения матрицы, выполняется функция FileClose, которая закрывает файл
- Если файл успешно закрыт, то выполнение программы продолжится
- Если файл не может быть закрыт, то программа прекратит выполнение
- Используя цикл, происходит вывод элементов матрицы на экран
- После завершения вывода матрицы, выполняется функция FileClose, которая закрывает файл
- Если файл успешно закрыт, то выполнение программы продолжится
- Если файл не может быть закрыт, то программа прекратит выполнение
- Выполняется функция Dispose, которая освобождает память, выделенную под динамический массив
- Если память была выделена, то выполнение программы продолжится
- Если память не была выделена, то программа прекратит выполнение
- Завершение работы программы