Алгоритмы имеют смысл только для массивов, в которых количество столбцов равно количеству строк.
К элементам главной диагонали относятся следующие элементы: а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