Краткие теоретические сведения
Рассмотренный ранее линейный массив представлял собой вектор, т.е. линейную последовательность чисел, например:
1 2 3 –5 0 1 3 6 …
Для определения такого массива необходимо задать 1 параметр - количество элементов (например n). Поэтому для обработки одномерного массива достаточно было организовать цикл по одной переменной (например i): for i:=1 to n do mas[i]:=…
Двумерный массив представляют собой матрицу, для определения которой необходимо задать два параметра - количество строк (например n) и количество столбцов (например m). Если количество строк - 2, количество столбцов - 3, тогда матрица будет выглядеть например так:
1 3 -5
2 3 4
Следовательно, для обработки матрицы (двумерного массива) требуется организовать цикл по двум переменным (например i и j ):
for i:=1 to n do
begin
for j:=1 to m do
begin
mas[i,j]:=…
end;
end;
Пример программы нахождения суммы элементов двумерного массива
Пусть требуется составить программу, которая в двумерном массиве находит сумму его элементов и выводит ее на экран. Количество элементов массива (строк и столбцов) пользователь вводит с клавиатуры.
В начале программы опишем двумерный массив с именем mas, состоящий из 10 строк и 10 столбцов (максимально) типа integer. Затем опишем переменную S, обозначающую сумму элементов, i, j-индексы соответственно строки и столбца, n,m-количество строк и столбцов.
В основной программе пользователь задает размерность матрицы (количество строк и столбцов). Затем во вложенном цикле (по i и по j) осуществляется ввод с клавиатуры элементов матрицы, а затем вывод на экран введенного пользователем массива.
После того, как массив был введен, с ним можно непосредственно начинать работать. В данном примере необходимо найти сумму элементов двумерного массива.
Любое нахождение суммы начинается с обнуления переменной суммы: s:=0. Затем в цикле по i и по j вычисляется сумма:
for i:=1 to n do
begin
for j:=1 to m do
begin
s:=s+mas[i,j];
end;
end;
В целом текст программы выглядит так:
Program matrix;
Uses crt;
var
mas:array [1..10,1..10] of integer;
s:integer;
i,j,n,m:integer;
Begin
Сlrscr;
writeln('Введите количество строк n:');
readln(n);
writeln('Введите количество столбцов m:');
readln(m);
for i:=1 to n do {ввод элементов двумерного массива}
begin
for j:=1 to m do
begin
writeln('Введите ',i,',',j,'-й элемент матрицы: ');
readln(mas[i,j]);
end;
end;
writeln('Введенный массив: ');
for i:=1 to n do {вывод элементов двумерного массива}
begin
for j:=1 to m do
write(mas[i,j]:5);
end; {конец вывода}
s:=0; {обнуление суммы}
for i:=1 to n do
begin
for j:=1 to m do
begin
s:=s+mas[i,j];{вычисление суммы элементов}
end;
end;
write('Summa:');
write('S= ',S); {вывод на экран полученной суммы}
End.
Пример программы нахождения количества положительных и отрицательных элементов двумерного массива
Пусть требуется составить программу, которая подсчитывала бы количество положительных и количество отрицательных элементов двумерного массива и записывала бы положительные и отрицательные элементы в два разных массива.
В начале программы опишем двумерный массив с именем mas, состоящий из 10 строк и 10 столбцов (максимально) типа integer, а также массивы B и C для положительных и отрицательных элементов соответственно. Затем опишем переменные k, l-количество положительных и отрицательных элементов соответственно, i, j - индексы соответственно строки и столбца, n,m-количество строк и столбцов.
Проверка на положительность элементов может выглядеть так:
for i:=1 to n do
begin
for j:=1 to m do
begin
if mas[i,j]>0 then…
Если условие выполняется (i,j –й элемент является положительным), то количество положительных элементов k увеличивается на 1 и заполняется массив B:
if mas[i,j]>0 then
begin
k:=k+1;
B[k]:=mas[i,j];
end;
Аналогично выполняется проверка на отрицательность, количество отрицательных элементов l увеличивается на 1 и заполняется массив C.
В целом текст программы выглядит так:
Program matrix_2;
Uses crt;
Var
mas:array [1..10,1..10] of integer;
B:array [1..10] of integer;
C:array [1..10] of integer;
i,j,k,l,n,m:integer;
Begin
Сlrscr;
writeln('Введите количество строк n:');
readln(n);
writeln('Введите количество столбцов m:');
readln(m);
{ввод-вывод элементов матрицы mas}
for i:=1 to n do
begin
for j:=1 to m do
begin
if mas[i,j]>0 then
begin
k:=k+1;
B[k]:=mas[i,j];
end;
end;
if mas[i,j]<0 then
begin
l:=l+1;
C[l]:=mas[i,j];
end;
end;
{Вывод на экран полученных массивов B и C}
write('Массив из положительных : ');
for i:=1 to k do
write(' ',B[i]);
writeln;
write('Массив из отрицательных : ');
for i:=1 to l do
write(' ',C[i]);
readln;
End.