Суммирование элементов главной или побочной диагонали

Алгоритмы имеют смысл только для массивов, в которых количество столбцов равно количеству строк.

К элементам главной диагонали относятся следующие элементы: а11, а22, а33,…, аnn. Следовательно, для суммирования элементов необходимо организовать цикл, параметр которого будет являться индексом и для строк, и для столбцов.

sumVect:=0; // обнуляем сумму элементов

for i:=1 to n do

sumVect:= sumVect +A[i][i];

К элементам побочной диагонали относятся следующие элементы: а15, а24, а33, а42, а51. Как видно из примера, индексы строк возрастают от 1 до n, а индексы столбцов убывают от n до 1. Поэтому для исполнения алгоритма организуем цикл, который будет менять номера строк, одновременно в цикле будем вычислять номера столбцов по формуле n-i+1.

sumVect:=0;

for i:=1 to n do

sumVect:= sumVect +A[i][n-i+1];

Суммирование элементов матрицы

Поскольку строка – есть одномерный массив, то для суммирования элементов строки используют алгоритм «Суммирование элементов одномерного массива». Этот алгоритм выполняется столько раз, сколько в массиве строк.

sumMatr:=0; // обнуляем сумму элементов таблицы

for i:=1 to n do begin // для каждой строки

sumVect:=0; // обнуляем сумму элементов строки

// суммирование элементов i-ой строки

for j:=1 to m do // для каждого j-го элемента

sumVect:=sumVect+A[i][j]; // добавим элемент из i-ой строки и j-го столбца

// суммирование строк матрицы

sumMatr:=sumMatr+sumVect

End

Примечание: В предыдущей работе была рассмотрена функция, реализующая алгоритм нахождения суммы элементов массива. Внеся незначительные изменения в заголовок функции (тело функции никаких изменений не требует), связанные с изменением используемых типов, получим новую функцию: function sumVector(A: tVector): integer. В ней изменился тип формального параметра с типа tAr на тип tVector, т. к. фактические параметры описаны по–разному. Тип возвращаемого функцией значения изменился потому, что элементы массивов относятся к различным типам: real и integer соответственно. Тогда алгоритм примет вид:

sumMatr:=0; // обнуляем сумму

for i:=1 to n do begin // для каждой строки матрицы

sumVect:=sumVector(A[i]); // получим сумму элементов i-ой строки

sumMatr:= sumMatr+sumVect

End


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: