Лабораторная работа № 13
Двумерные массивы
Цель работы: освоение приемов объявления, обращения и использования двумерных массивов при решении задач.
Двумерные массивы являются частным случаем многомерных массивов и обладают теми же свойствами, что и одномерные массивы. От одномерных массивов они отличаются только тем, что указывается два параметра (индекса) при обращении к элементу массива. Например, А[i, j], где i – номер строки, j- номер столбца. К двумерным массивам применимы типовые алгоритма обработки одномерных массивов. Дополнительные типовые алгоритма обработки двумерных массивов:
§ суммирование элементов главной диагонали;
§ суммирование элементов побочной диагонали;
§ суммирование элементов строк (столбцов);
§ поиск минимального (максимального) элемента каждой строки (столбца).
Один из возможных вариантов объявления двумерного массива в программе:
{объявляем две константы – максимально возможное количество строк и столбцов}
const MaxN=10; MaxM=8;
{объявляем тип данных –двумерный массив целых чисел}
|
|
type TMyArray=Array[1..MaxN, 1..MaxM] of Integer;
var a: TMyArray;
Типовые алгоритмы обработки двумерных массивов
Заполнение двумерного массива случайными числами
Реализация:
for i:=1 to n do
for j:=1 to m do
a[i, j]:=random(20)-10;
Вывода на экран элементов двумерного массива
Реализация:
for i:=1 to n do
begin
for j:=1 to m do write(a[i, j], ‘ ‘);
writeln;
end;
Суммирование элементов главной диагонали
Алгоритм имеет смысл только для массива, в котором количество столбцов равно количеству строк. К элементам главной диагонали относятся следующие элементы: а11, а22, а33,….аnn. Следовательно, для суммирования элементов необходимо организовать цикл, параметр которого будет являться индексом и для строк, и для столбцов.
Реализация:
s:=0;
for i:=1 to n do
s:=s+a[i, i];
writeln(‘s=’, s);
Суммирование элементов побочной диагонали
Алгоритм имеет смысл только для массива, в котором количество столбцов равно количеству строк. К элементам побочной диагонали относятся следующие элементы: а15, а24, а33, а42, а51. Как видно из примера, индексы строк возрастают, одновременно индексы столбцов убывают. Поэтому для исполнения алгоритма организуем цикл, который будет менять номера строк, одновременно в цикле будем менять номера столбцов.
Реализация:
s:=0;
j:=n;
for i:=1 to n do
begin
s:=s+a[i, j];
j:=j-1;
end;
writeln(‘s=’, s);
Суммирование элементов строк (столбцов)
Поскольку строка (столбец) - это есть одномерный массив, то для суммирования элементов строки (столбца) используют алгоритм «Суммирование элементов одномерного массива». Этот алгоритм выполняется столько раз, сколько в массиве строк (столбцов).
Реализация:
for i:=1 to n do
begin
s:=0; {обнуляем s}
{суммирование элементов i строки}
for j:=1 to m do
s:=s+a[i, j];
writeln(‘сумма ’, i, ‘ строки= ’, s);
end;