2. Обробка двохмiрних масивів
Двохмiрнi масиви являють собою набiр елементiв, упорядкованих у рядки, у кожному з яких міститься одна і та ж кількість елементів. Положення елементів визначається двома iндексами: першим визначається номер рядка, другим - мiсце елемента у рядку (часто це місце називають стовпцем).
Оскільки ім'я масиву єдине для всіх елементів, для визначення адресації, необхідної при збереженні значень елементів у пам'яті комп'ютера, слід повідомити про особливість використання імені масиву. При програмуванні це виконується у описовій формі перед обробкою елементів.
Опис двохмірного масиву (матриці) відбувається одним із способів:
у блоці TYPE: type M = array [r1..r2,s1..s2] of <тип>;
у блоці VAR: var a : array [r1..r2,s1..s2] of <тип>;
b : M;
У розділі опису констант, я к типізовану константу:
Приклад:
Const M : array [1..2,1..3] of byte =(( 5,76,234),(12,0,1));
Звернення до елемента масиву відбувається через ім'я масиву по номеру рядка та стовбця: A[2,3], A[t,z], A[i+1,k*2] тощо.
Для доступу до елементів масиву та їх поелементної обробки користуються частіше за все вложеним оператором арифметичного циклу FOR.
Приклад:
Дана матриця B[i,j] дiйсних чисел, де i=1,2,3; j=1,2,3,4,5. Визначити добуток елементiв кожного стовбця матрицi.
PROGRAM b1;
CONST
KI=3; KJ=5;
TYPE m=ARRAY [1..KI,1..KJ] OF REAL;
VAR b:m;
i,j:INTEGER;
p:REAL;
BEGIN
WRITELN('Введiть значення матрицi B[i,j]');
FOR i:=1 TO KI DO
FOR j:=1 TO KJ DO
BEGIN
WRITE ('B[',I:2,J:2,']= ');
READLN(b[i,j]);
END;
WRITELN('Початкова матриця B[',ki:2,kj:2,'] ');
FOR i:=1 TO ki DO
BEGIN
FOR j:=1 to kj DO
WRITE(B[i,j]:5:2);
WRITELN;
END
FOR i:=1 TO kj DO
BEGIN
p:=1.0;
FOR j:=1 to ki DO
p:=p*b[i,j]
WRITELN('Добуток p=',p:8:2, 'в стовбці', j:2 );
END;
ЕND.
Питання для самоконтролю
Що називається масивом?
Які способи опису масивів вам відомі?
Що таке ідентифікатор масиву?
Як ввести одновимірний масив?
Як вивести одновимірний масив (у стовпчик та у рядок)?
Як ввести двовимірний масив?
Як вивести двовимірний масив (по рядкам та по стовпчикам)?
Що таке розмірність масиву?
Що називається індексом масиву?
Чим відрізняється тип індекса від базового типу?
Чи можна ввести елементів у масив більше (менше), ніж описаноу квадратних дужках? Обгрунтувати відповідь
Як отримати доступ до елементів масиву?
Який цикл буде верхній, коли потрібно знайти добуток елементів у кожному стовбці (рядку) матриці?
Як на мові ТР70 записати елемент матриці В, який знаходиться на 7 місці 4-го рядка?
