Двумерный массив – это структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен.
Например, D(3×4) – двумерный массив, состоящий из 3 строк и 4 столбцов.
Общий вид записи:
где Dij– элементы массива;
i– индекс строки;
j– индекс столбца.
Запись элементов двумерного массива на языке Паскаль D[i,j].
Общий вид записи описания двумерного массива:
Var «Имя массива»: array[n1..n2, m1..m2] of«Тип элементов»;
n1 − номер первой строки;
n2 − номер последней строки;
m1 – номер первого столбца;
m2 – номер последнего столбца.
array, of –зарезервированные слова («массив», «из»).
Задача 1.Найдите максимальный элемент в каждой строке матрицы A(4×3).
Обозначения:
MAX– максимальный элемент матрицы.
Program Matriza1;
Var
i, j, MAX: integer;
А:array[1..4,1..3] of integer;
begin {Организация ввода матрицы с клавиатуры построчно}for i:=1 to 4 dofor j:=1 to 3 do readln (A[i, j]);
{Организация цикла для поиска максимального элемента в каждой строке}
for i:=1 to 4 do begin
{Присвоение начального значения максимальному элементу текущей строки}
MAX:=a[i,1];
for j:=2 to 3 do
if a[i,j]>MAX then MAX:=a[i,j];
{Вывод результатов вычисления на экран}
writeln ('Макс.элемент в', i, 'строке=', MAX);
end;
readln;
end.
Задача 2.В матрице D(3×3) найдите произведение элементов каждого столбца.
Обозначения:
P – произведение элементов каждого столбца.
Program Matriza2;
Var
{Описание переменных матрицы}
i, j, p: integer;
{Описание матрицы D}
D: array[1..3,1..3] of integer;
Begin
{Организация ввода матрицы с клавиатуры построчно}for i: =1 to 3 dofor j : = 1 to 3 do readln (D[i, j]);
{Организация цикла для вычисления произведения элементов каждого столбца}
for j:=1 to 3 do begin
{Присвоение начального значения произведению}
P:=1;
for i:=1 to 3 do p:=p*D[i,j];
{Вывод результатов вычисления на экран}
writeln ('P=',P);
end;
readln;
end.
Задача 3.В матрице С(5×5) элементы, лежащие выше главной диагонали, уменьшите на сумму элементов главной диагонали.
Обозначения:
Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j).
S – сумма элементов главной диагонали.
Для ввода данных используется функция Random (50) –датчик случайных чисел в диапазоне [0;49].
Program Matriza3;
Var
i, j, s: integer;
C: array[1..5,1..5] of integer;
begin
{Запуск генератора случайных чисел}
Randomize;
Writeln ('Данная матрица');
For i:=1 to 5 do begin
For j:=1 to 5 do begin
C[i, j]:=Random(50);
Write (' ',C[i, j]:4);
End;
Writeln;
End;
{Присвоение начального значения сумме}
S:=0;
{Вычисление суммы элементов главной диагонали матрицы}
For i:=1 to 5 do
S:=S+C[i, i];
Writeln ('S=',S);
Writeln ('Новая матрица');
{Организация цикла для уменьшения элементов матрицы, лежащих выше главной диагонали на сумму}
For i:=1 to 5 do begin
For j:=1 to 5 do begin
If i<j then C[i, j]:= C[i, j]-S;
{Вывод новой матрицы на экран}
Write (' ',C[i, j]:4); end;
Writeln;
End; Readln;
End.
Задача 4.В матрице В(3×3) все элементы, лежащие на главной диагонали, замените на 0.
Данные задаются типизированной константой, значения элементов массива выбираются произвольно
Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j).
Program Matriza4;
Var
i, j: integer;
{Описание матрицы В с помощью типизированной константы}
const B: array[1..3,1..3] of integer=
((1,-3,2),
(5,-4,-2),
(-1,5,8));
begin
{Организация цикла для замены элементов главной диагонали матрицы на0}
for i:=1 to 3 do
for j:=1 to 3 do
if i=j then B[i, j]:=0
{Вывод новой матрицы на экран}
for i:=1 to 3 do begin
for j:=1 to 3 do
write (B[i, j]:5);
writeln;
end;
readln;
end.
Задача 5.В матрице А(4×4) определите в каждом столбце количество отрицательных элементов.
Обозначения:
k– количествоотрицательных элементов.
Program Matriza5;
Var
i, j, k: integer;
A: array[1..4,1..4] of integer;
begin
for i : = 1 to 4 do
for j : = 1 to 4 do
readln (А[i, j]);
{Организация цикла для подсчёта количества отрицательных элементов в каждом столбце}
for j:=1 to 4 do begin
{Присвоение начального значения количеству элементов}
k:=0;
for i:=1 to 4 do
if A[i,j]<0 then k:=k+1;
{Вывод результатов вычисления на экран}
writeln ('В столбце №',j,
'кол-во отриц.элементов- ',k);
end;
readln;
end.
Задача 6.Выполните транспонирование матрицы Х(3×3) (замените строки столбцами).
Обозначения:
Yij – элементы полученной матрицы после транспонирования.
Program Matriza6;
Var
i, j: integer;
Y: array[1..3,1..3] of integer;
X: array[1..3,1..3] of integer;
begin
{Организация ввода матрицы X с клавиатуры}
for i:=1 to 3 do
for j:=1 to 3 do
readln (X[i, j]);
{Организация цикла для замены строк столбцами матрицы}
for i:=1 to 3 do
for j:=1 to 3 do
Y[j,i]:=X[i,j];
{Вывод новой матрицы Y на экран}
for i:=1 to 3 do begin
for j:=1 to 3 do
write (Y[i,j]:5);
writeln;
end;
readln;
end.
Задача 7.Определите произведение элементов четных столбцов матрицы В(3×4).
Обозначения:
Р – произведение элементов.
Program Matriza7;
Var
Р, i, j: integer;
B: array[1..3,1..4] of integer;
begin
for i : = 1 to 3 do
for j : = 1 to 4 do
readln (B[i, j]);
j:=2;
{Организация цикла с предусловием}
while j<=4 do begin
{Присвоение начального значения произведению}
P:=1;
{Вычисление произведения}
for i:=1 to 3 do
Р:=Р*В[i,j];
{Вывод результатов вычисления на экран}
writeln ('Р=',Р);
{Переход на следующий чётный столбец}
j:=j+2;
end;
readln;
end.
Задача 8.В каждой строке матрицы А(3×3) определите сумму положительных элементов.
Обозначения:
S– сумма положительных элементов.
Program Matriza8;
Var
s, i, j: integer;
A: array[1..3,1..3] of integer;
begin
for i : = 1 to 3 do
for j : = 1 to 3 do
readln (А[i, j]);
{Организация цикла для вычисления суммы положительных элементов матрицы в каждой строке}
for i:=1 to 3 do begin
{Присвоение начального значения сумме}
S:=0;
for j:=1 to 3 do
if A[i,j]>0 then S:=S+A[i,j];
{Вывод результатов вычисления на экран}
writeln ('Сумма ',i,' строки=',S);
end;
readln;
end.