Курсовая работа: Работа с двумерными числовыми массивами
Суммы элементов между диагоналями
Далее идут функции, осуществляющие подсчёт сумм элементов выше и ниже пересечения диагоналей, а так же смену местами этих элементов. Главной диагональю считается множество элементов матрицы, индексы которых совпадают, побочной диагональю считается та, которая идёт по диагонали из нижнего левого угла матрицы.
Функции GetSumAbove и GetSumBelow проходят соответствующие половины строк матрицы, для каждой строки высчитывая диапазон столбцов, из которых нужно суммировать элементы:
1 {возвращает сумму элементов выше пересечения диагоналей матрицы arr}
2 function GetSumAbove (const arr: TMatrix): Int64;
3 var
4 RowN, ColN: integer;
5 lastColumn: integer;//номер столбца, содержащего элемент дальней диагонали минус 1
6 begin
7 Result:= 0;
8 for RowN:= 0 to (high(arr) div 2) do
9 begin//с нулевой, по средюю строку
10 lastColumn:= high(arr)-RowN-1;//определим номер столбца последнего элемента, подлежащего суммированию
11 //если число столбцов меньше числа строк, то последний столбец может оказаться ближе
12 if lastColumn > high(arr[RowN]) then lastColumn:= high(arr[RowN]);
13 for ColN:= RowN+1 to lastColumn do //просуммируем элементы в высчитаных пределах
14 Result:= Result + arr[RowN, ColN];
15 end;
16 end;
17 {возвращает сумму элементов ниже пересечения диагоналей матрицы arr}
18 function GetSumBelow(const arr: TMatrix): Int64;
19 var
20 RowN, ColN: integer;
21 lastColumn: integer;//номер столбца, содержащего элемент дальней диагонали минус 1
22 begin
23 Result:= 0;
24 for RowN:= (high(arr) div 2)+1 to high(arr) do
25 begin//со средней по последнюю строку
26 lastColumn:= RowN-1;//определим номер столбца последнего элемента, подлежащего суммированию