:: главная ::
 
:: учебник ::
 
:: download ::

Двумерные массивы (матрицы)

Двумерным массивом называется совокупность данных , каждое значение которых зависит от его местоположения в строке и в столбце.

Каждый элемент матрицы описывается, как

A(i,j)

где:
A(i,j) - значение элемента матрицы
А - имя матрицы
i - номер строки
j - номер столбца

Если в матрице количество строк равно количеству столбцов, то такая матрица называется квадратной, в противном случае прямоугольной.

Прямоугольная матрица

A(l,l) A(l,2) A(l,3) A(l,4)
A(2,l) A(2,2) A(2,3) A(2,4)
A(3,l) A(3,2) A(3,3) A(3,4)





 

Квадратная матрица

A(l,l) A(l,2) A(l,3)
A(2,l) A(2,2) A(2,3)
A(3,l) A(3,2) A(3,3)





 

Соотношение индексов в квадратной матрице

i=j элементы матрицы находятся на главной диагонали
i<j элементы матрицы находятся над главной диагональю
i>j элементы матрицы находятся под главной диагональю
i+j=n+1 элементы матрицы находятся на побочной диагонали
i+j<n+1 элементы матрицы находятся над побочной диагональю
i+j>n+1 элементы матрицы находятся под побочной диагональю




 

 

 

 

 

Описание элементов двумерного массива (матрицы)

1 способ:

<имя массива>: array [<кол-во строк, кол-во столбцов >] of <тип комп>;

где:
<имя массива> - идентификатор массива
array - массив
<кол-во строк> - количество строк в матрице < кол-во столбцов> - количество столбцов в матрице
of - для
<тип комп> - описание типа переменных в массиве (real, integer и т. д.)

Пример:
Массив А состоит из 4 столбцов и 3 строк, значение каждого элемента матрицы представляет собой вещественное число.
а : array [1..3,1..4] of real;

Массив В и С состоят из 3 строк и 3 столбцов, значение каждого элемента матрицы представляет собой целое число.
b, с : array [1..3,1..3] of integer;

2 способ:

<имя массива>: array [<кол-во строк] of array [< кол-во столбцов >] of <тип комп>;

Пример:
Массив А состоит из 4 столбцов и 3 строк, значение каждого элемента матрицы представляет собой вещественное число.
а : array [1..3] of array [1..4] of real;

Массив В и С состоят из 3 строк и 3 столбцов, значение каждого элемента матрицы представляет собой целое число.
b,c : array [1..3] of array [1..3] of integer;

 

Ввод - вывод значений элементов матрицы

Заполнение элементов матрицы с клавиатуры

program zadacha (input, output); (ввод с клавиатуры, вывод в столбик}
var
a: array[1..10,1..10] of real;
j, i: integer;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
readln (a[i, j]);
writeln ( 'a(', i, ',', j, ')=', a[i,j])
end
end.

Заполнение элементов матрицы по формуле

program zadacha (input, output) ; {ввод по формуле, вывод таблицей}
var
a: array[1..10,1..10] of real;
i,j: integer;
begin
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
a[i,j]: = (i + 0.5)/(j + sin(j));
write ( a[i,j], ' ')
end;
writeln
end
end.

Заполнение элементов матрицы случайными числами

program zadacha (input,output); {ввод случайных чисел, вывод в строчку}
var
a: array[1..10,1..10] of integer;
i,j: integer;
begin
randomize;
for i:=1 to 10 do
for j:=1 to 10 do
begin
a[i,j]:=random(30);
write ( 'а(', i, ',', j, ')=', a[i,j])
end
end.

 

Типовые задачи на матрицы

Нахождение экстремумов
Дана прямоугольная матрица A(10,15), заполненная случайными числами в диапазоне от 0 до 29 включительно. Выдать на печать максимальное значение элементов данной матрицы.

program zadacha (input, output); {нахождение наибольшего значения}
var
a: array[1..10,1..15] of integer;
i,j,max: integer;
begin
randomize;
for i:=1 to 10 do
for j:=1 to 15 do a[i,j]:=random(30);
max:=a [1,1];
for i:=1 to 10 do
for j:=1 to 15 do
if a[i,j]>max then max:=a[i,j]; writeln ( 'максимальное значение=',тах)
end.

Суммирование значений элементов матрицы
Дана матрица A(l,15), заполненная датчиком случайных чисел. Найти сумму значений всех элементов данной матрицы.

program zadacha (input, output) ; {сумма значений элементов матрицы}
var
a: array[1..10,1..l5] of integer;
i,j,s: integer;
begin
s:=0;
randomize;
for i:=1 to 10 do
for j:=1 to 15 do
begin
a [i,j]:=random(30);
s:=s + a[i,j]
end;
writeln ( 'сумма значений=',s)
end.

Нахождения количества значений элементов матрицы
Дана матрица A(10,20), заполненная датчиком случайных чисел в диапазоне от -10 до 19 включительно. Подсчитать количество положительных значений элементов каждой строки матрицы.

program zadacha (input, output) ; {кол-во знач. элементов в каждой строке матрицы}
var
a: array[1..10,1..20] of integer;
i,j,k: integer;
begin
for i:=1 to 10 do
begin
k:=0;
for j:=1 to 20 do
begin
a[i,j]:=random (30)-10;
if a[i,j]>0 then k:=k+1
end;
writeln ( 'кол-во полож. знач. в ', i, ' строке=',k)
end;
end.

Формирование нового одномерного массива из значений элементов матрицы
Дана матрица, состоящая из 10 строк и 5 столбцов и заполненная случайными числами в диапазоне от 0 до 29. Сформировать одномерный массив SUM из сумм значений элементов каждого столбца матрицы.

program zadacha (input, output); {формирование одномерного массива из сумм по столбцам}
var
a: array[1..10,1..5] of integer;
sum: array[1..5] of integer;
i,j,s: integer;
begin
for i:=1 to 10 do
for j:=1 to 5 do
begin
a [i,j] :=random (30) ;
writeln ('эл-нт мас-ва=',a[i,j])
end;
for j:=1 to 5 do
begin
s:=0;
for i:=1 to 10 do s:=s + a[i,j];
sum[j]:=s
end;
for i:=1 to 5 do writeln ( 'sum(', i,')=',sum(i))
end.



<-->
 
Hosted by uCoz