Osnovy_informatiki_-_11_Matritsy
.pdfМногомерные массивы
Матрицы
Расположение массива в памяти
• Модель фон Неймана a
var a: array [ 1..5] of byte;
a[ 1 ] адрес совпадает с адресом a a[ 3 ] к адресу a добавить 2 байта a[ i ] к адресу a добавить (i-1) байт
В общем случае, если M – массив элементов типа T и индекс начинается с 1:
адрес
M[ i ] = адрес M + (i-1) * размер (T)
Многомерные массивы
array [<тип индекса>{,<тип индекса>}]
of <тип элементов (компонент)>
var mas2 : array [ 1..3, 1..4] of integer;
mas |
|
|
|
|
|
mas[ 2,3] |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Математическая модель
строки
столбцы
В общем случае, если M – двумерный массив var M : array [ 1..n, 1..m] of T;
M[ i , j] = адрес M + ((i-1) *n + (j-1))* размер (T)
Другой способ описания
type row = array[1..4] of integer; matr = array [1..3] of row;
var M : matr; r: row;
begin
// имеет смысл работа со строкой матрицы r:=M[1];
Задачи на обработку матриц
Описание
const sz=10;
type IMatrix=array [1..sz,1..sz] of integer;
var A: IMatrix;
n,m :integer;
Заполнение
read(n,m);
ReadIMatr(A,n,m);
Вывод матрицы
for i:=1 to n do begin
for j:=1 to m do write(A[i,j]:4);
writeln; end;