Примеры решения задач с двумерными массивами
Задача 1: Найти произведение ненулевых элементов матрицы.
Решение:
Для решения данной задачи нам потребуются переменные: матрица, состоящая, например, из целочисленных элементов; P – произведение элементов, отличных от 0; I , J – индексы массива; N , M – количество строк и столбцов в матрице.
Входными данными являются N , M – их значения введем с клавиатуры; матрица – ввод матрицы оформим в виде процедуры, заполнение матрицы осуществим случайным образом, т.е. с помощью функции random ().
Выходными данными будет являться значение переменной P (произведение).
Чтобы проверить правильность выполнения программы, необходимо вывести матрицу на экран, для этого оформим процедуру вывода матрицы.
Ход решения задачи:
1) обсудим сначала выполнение основной программы, реализацию процедур обговорим чуть позже:
2) введем значения N и M;
3) введем двумерный массив;
4) выведем полученную матрицу;
5) присвоим начальное значение переменной P =1;
6) выполним последовательный перебор всех строк i от 1-й до N-й, в каждой строке будем перебирать все столбцы j от 1-го до M-го, для каждого элемента матрицы будем проверять условие: если a [i,j]<>0, то произведение P будем домножать на элемент a[i,j] ( P := P * a[i,j]);
7) выведем на экран значение произведения ненулевых элементов матрицы – P .
var a:array[1..100,1..100]of integer;
i,j,m,n,P:integer;
begin
writeln('vvedi razmer matrizi');
read(n,m);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(100);write(a[i,j]:5:1);end;
writeln; end;
P:=1;
for i:=1 to n do
for j:=1 to m do
if a[I,j]<>0 then P:=P*a[i,j];
write(‘P=’,P);
end.
Задача 2: Вычислите среднее арифметическое значение элементов двухмерного массива А(nхm), больших заданного числа Q.
Решение:
var a:array[1..100,1..100]of real; Q,x:real;
i,j,m,n,k:integer;
begin
writeln('vvedi razmer matrizi');
read(n,m);
writeln('vvedi Q’);
read(Q);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(100)+random;
write(a[i,j]:5:1);end;
writeln; end;
x:=0;k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>Q then
begin x:= x+a[i,j];k:=k+1; end;
x:=x/k;
write(‘srednee arifm = ‘,x:10:3);
end.
Задача 3: Задан двухмерный массив вещественных чисел. Найдите номер строки и номер столбца, в которых находится наименьший элемент.
Решение:
var a:array[1..100,1..100]of real;
min:real; i,j,m,n,k,l:integer;
begin
writeln('vvedi razmer matrizi');
read(n,m);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(100)+random;
write(a[i,j]:5:1);end;
writeln; end;
min:=a[1,1];k:=1;l:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]< min then
begin min:= a[i,j];k:=i;l:=j end;
write(‘nomer stroki = ‘,k,’ nomer stolbza=’,l);
end.