Рассмотрим еще один пример под номером 21. Не забывайте, что чтобы понять суть, необходимо как минимум прочитать предыдущий пост — Типизированный файл. Пример №20.
В файле matrix.dat содержится квадратная матрица целых чисел. Требуется первый элемент каждой строки заменить на номер строки. Но сначала давайте разберемся, каким образом матрица хранится в файле. Запись матрицы в файл типа file of integer происходит построчно.
Из приведенного рисунка видно, что номеp компоненты файла, содержащей элемент матрицы aij, равен n*(i-1)+j-1. Так что первый элемент каждой строки можно найти по формуле n*(i-1).
Пример 21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
type IntFile = file of integer; var f : IntFile; a, b : integer; n,i : word; BEGIN Assign(f,’matrix.dat’); Reset(f); n:=round(sqrt(filesize(f))); for i:=1 to n do begin seek(f,n*(i-1)); write(f,i); end; close(f); END. |