Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod3O.doc
Скачиваний:
5
Добавлен:
14.08.2019
Размер:
6.93 Mб
Скачать

2.4.4. Часто встречающиеся задачина двумерный массив

При составлении программ с использованием двумерных массивов некоторые задачи встречаются особенно часто. Ниже приведены фрагменты соответствующих программ.

Пусть для примера дана матрица а(4, 4).

Задача 1. Найти сумму элементов матрицы а.

sum:=0;

for i:=1 to 4 do

for j:=1 to 4 do

sum:= sum + a[i, j];

Задача 2. Найти максимальный элемент матрицы а.

max:=а[1, 1];

for i:=1 to 4 do

for j:=1 to 4 do

if a[i, j] > max then max:=a[i, j];

Примечание. При вычислении минимального элемента матрицы знак неравенства меняется на противоположный и переменную следует назвать min.

Задача 3. Найти максимальный элемент матрицы a с запоминанием его индексов.

max:=а[1, 1]; k:=1; т:=1;

for i:=1 to 4 do

for j:=1 to 4 do

if a[i, j] > max then

begin max : = a[i, j];

k:=i;

m:=j;

end;

Задача 4. Найти количество положительных элементов матрицы a.

k:=0;

for i:=1 to 4 do

for j:=1 to 4 do

if a[i, j] > 0 then k:=k+1;

Задача 5. Сформировать вектор b из положительных элементов, расположенных в четных строках матрицы а. Фактическое число элементов вектора b неизвестно, т. к. оно зависит от значений элементов матрицы а. В описании вектора b необходимо указать максимально возможное число положительных элементов в четных строках матрицы a.

var a:array [1..4, 1..4] of real;

b: array [1..8] of real;

{2 строки с четными номерами по 4 элемента в каждой строке}

. . . . . . . . . . . . . . . . . . . . . ..

k := 0;

for i:=1 to 4 do

i mod 2 = 0 then

for j:=1 to 4 do

if a[i, j] > 0 then

begin к:=k + 1;

b[k]:=a[i, j];

end;

{фактическое число элементов вектора b определяется значением переменной k}

writeln(вывод вектора b);

for i:=1 to k do write(b[i]:5:2);

Задача 6. Сформировать вектор b из сумм элементов столбцов матрицы а. Количество элементов в массиве b равно числу столбцов матрицы а.

var а : array [1..4, 1..4] of real;

b : array [1 .. 4] of real;

. . . . . . . . . . . . . . . . . . . . . ..

for j := 1 to 4 do

begin

b[j]:=0;

for i:=1 to 4 do b[j]:=b[j] + a[i, j];

end;

writeln(вывод вектора b);

for i:=1 to 4 do write(b[i]:5:2);

Задача 7. Найти произведение элементов 2-го столбца матрицы а(4. 4).

p:=1;

for i:=1 to 4 do p:=p*a[i, 2];

2.5.2. Задачи с использованием главной или побочной диагонали матрицы

Существует множество задач, в которых необходимо использовать элементы главной или побочной диагонали матрицы (эти понятия имеют смысл только для квадратных матриц!).

Пусть дана матрица а(4,4).

a11, a22, a33, a44 – элементы главной диагонали матрицы. На главной диагонали индексы строки и столбца равны, то есть i = j. Элемент главной диагонали можно обозначать как a[i,i].

У элементов матрицы, лежащих выше главной диагонали, i < j, а у тех, которые ниже, i > j.

a14, a23, a32, a41 – элементы побочной диагонали матрицы. На побочной диагонали сумма индексов строки и столбца постоянна и на единицу больше размера матрицы, т. е. для матрицы a(4, 4) сумма индексов i + j = 5, поэтому элемент побочной диагонали можно обозначать как a[i,5 – i].

У элементов a[ij], лежащих выше побочной диагонали сумма индексов i + j < 5, а у элементов a[i, j], лежащих ниже побочной диагонали, сумма индексов i + j > 5.

Задача 1. Найти сумму элементов, расположенных на главной диагонали матрицы a.

sum:=0;

for i:=1 to 4 do

for j:=1 to 4 do

if i=j then sum:=sum + a[i, j];

Другой вариант:

sum:=0;

for i:=1 to 4 do

sum:=sum + a[i, i];

Задача 2. Найти сумму элементов матрицы а, расположенных выше ее главной диагонали.

sum = 0;

for i:=1 to 4 do

for j:=1 to 4 do

if i < j then sum:=sum + a[i, j];

Задача 3. Найти сумму элементов побочной диагонали матрицы a.

sum:=0;

for i:=1 to 4 do

for j:=1 to 4 do

if i+=5j then sum:=sum + a[i, j];

Другой вариант:

sum:=0;

for i:=1 to 4 do

sum:=sum + a[i, 5-i];

Задача 4. Найти сумму элементов матрицы a, лежащих выше ее побочной диагонали.

sum = 0;

for i:=1 to 4 do

for j:=1 to 4 do

if i+j<5 then sum:=sum + a[i, j];

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]