{ Пример 3.5. В массиве А(N,M) вычислить две суммы злементов,
расположенных ниже и выше главной диагонали.
Тест
╔═══════════════════╦═══════════════════════════════╗
║ Данные ║ Результат ║
╠═════╤═════════════╬═══════════════════════════════╣
║ │ 1 2 4 ║ S1=6 (ниже главной диагонали) ║
║ N=3 │ A = 3 1 3 ║ S2=9 (выше главной диагонали) ║
║ │ 2 1 2 ║ ║
╚═════╧═════════════╩═══════════════════════════════╝
}
Program TwoSums;
Uses Crt;
Var A : Array [1..10, 1..10] of Real;
S1, S2 : Real; { S1, S2 - суммы элементов, расположенных ниже
и выше главной диагонали, соответственно}
N, i, j : Integer;
{--------------------------------------------}
Procedure InputOutput;
Begin {описание процедуры ввода-вывода исходных данных}
ClrScr;
Write('Количество строк и столбцов - '); ReadLn(N);
For i := 1 to N do {Ввод матрицы}
For j := 1 to N do
begin Write('A[' , i , ', ' , j , '] = ? ');
ReadLn(A[i, j])
end; WriteLn;
ClrScr; WriteLn(' Матрица А');
For i := 1 to N do {Вывод матрицы}
begin
For j := 1 to N do Write(A[i, j] : 5 : 1);
WriteLn
end; WriteLn
End; { of InputOutput }
{--------------------------------------------}
Procedure Under;
Begin {описание процедуры суммирования элементов, }
S1 := 0; {расположенных ниже главной диагонали }
For i := 2 to N do
For j := 1 to i-1 do
S1 := S1 + A[i, j];
WriteLn('О т в е т :');
WriteLn('Сумма элементов, лежащих ниже главной диагонали =', S1:5:1);
End;
{--------------------------------------------}
Procedure Over;
Begin {описание процедуры суммирования элементов,}
S2 := 0; {расположенных выше главной диагонали}
For i := 1 to N-1 do
For j := i+1 to N do
S2 := S2 + A[i, j];
WriteLn('Сумма элементов, лежащих выше главной диагонали =', S2:5:1);
ReadLn
End;
{--------------------------------------------}
BEGIN
InputOutput; {Вызов процедуры ввода-вывода матрицы }
Under; {Вычисление суммы элементов, лежащих ниже главной диагонали}
Over ; {Вычисление суммы элементов, лежащих выше главной диагонали}
END.