До цих пір ми розглядали масиви, кожний елемент якого містить тільки один індекс. Такі масиви називаються одновимірними. В математиці часто використовують багатовимірні масиви, тобто масиви масивів. Особливо широке розповсюдження отримали двовимірні масиви, які називаються матрицями.
Наприклад: 3 4 8 9
7 16 1 5
6 23 17 2
Послідовність чисел написана в декілька рядків називається матрицею.
Дана матриця має розмір (3*4). Якщо весь масив позначити А, то кожний елемент масиву позначається двома індексами A[I,j]. Перший індекс рядка, другий - стовпчика. Можна описати:
Туре мат—array[1..3] of array[1. . 4] of integer;
Var а:мат;
Описується тип даних індексів від 1 до 3, а потім вказується
складний базовий тип, зокрема array [1 ..4] of integer;
Можна описати так:
Туре мат= аrrау[1..3, 1. .4]of integer;
Var а:мат;
Тут описується кожен тип індекса, потім вказується простий базовий тип елементів масиву integer.
Якщо в програмі необхідно виділити окремі блоки матриці, то необхідно ввести такий опис:
Type mas=array[1...4]of integer;
Мат=array[1.. 3]of mas;
Var a: mas;
b:мат;
Тут спочатку описується тип одного рядка, а потім через тип рядка тип всієї матриці.
Приклад: Які з проведених описів двовимірних масивів є неправильними і чому ?
Var a:array[1..5, 1..7] of real; - правильний
Var k: array[4,7] of integer; - неправильний тип індексу
Var p: array[1..6], [1..3] of real; -неправильний
Type mas =array[ 'b'..’f’, -3..3] of integer; - правильний
Type z=array['a'.. 'd'] — неправильний, так як не описаний тип eлементу.
Приклад: Дана матриця дійсних чисел B[I,J], де і вимірюється від 1 до З, j — від 1 до 5. Знайти добуток всіх елементів матриці.
Program амат1;
Var b: array[1., 3,1.. 5] of real;
i,j: integer;
p:real;
begin
p:=1;
for i: =1 to 3 do begin
for j: =1 to 5 do read(b[i,j]);
readln;
end;
for і: =1 to 3 do
for j:=1 to 5 do
p:=p*b[i,j];
writeln('p=’,p:8:2);
end.
Задача: є цілочисленний масив [4*4], впорядкувати масив по зростанню елементів першого стовбця.
Рrogram mat2;
var mas: array [1..4,1..4] of integer;
іJ,k,t: integer;
begin
writeln('Введіть матрицю');
for i: =1 to 4 do
begin
for j:=1 to 4 do
read(mas[i,j]);
readln;
end;
for i: =1 to 4 do
for j: =1 to 4 do
if mas[i,1]>mas[j, 1] then
for k:=1 to 4 do
begin
t: =mas[i,k];
mas[i,k]: =mas[j,k];
mas[j,k]: =t;
end;
for i: =1 to 4 do
begin
for j: =1 to 4 do
write(mas[i,j]:2);
writeln;
end;
end.
Приклад: Дані натуральні числа п та т. Отримати всі числа меньше n, квадрат суми чифр яких дорівнює т.
Program рг;
Var n,m,cr,x,I,sum: Integer;
Begin
Writeln( 'Введіть п та т : ');
Read(n,m) ;
Writeln('Відповідь: ');
For x: =n down to 0 do
begin
Sum: =0;
I:=x;
Repeat
Cf:=i mod 10;
Sum: =sum+cf;
I=i mod 10
Until 1=0
Sum: =sqr (sum);
If sum=m then writeln(x);
End;
End.
Приклад: По номеру у деякого року визначити с - номер його століття.
Program рг;
Var x,y: Integer;
Begin
Write( 'Введіть рік: ') ;
Readln(y);
X:=round(y/100+1);
Writeln(’Номep століття:', x:2);
End.