Пример 3.5.
В массиве A(N, N) вычислить две суммы
элементов, расположенных ниже и выше
главной диагонали.
Тест
Данные
Результат
N=3
S1=6 S2=9
Демонстрация
Школьный АЯ
алг Две суммы (арг цел N, арг вещ таб A[1:N, 1:N], рез вещ S1, S2)
надо | S1 = сумма элементов ниже главной диагонали
| S2 = сумма элементов выше главной диагонали
нач цел i, j
S1:=0; S2:=0
нц для i от 2 до N | циклы по элементам, расположенным
нцдля j от 1 до i-1 | ниже главной диагонали
S1:=S1 + A[i, j]
кц
кц
нц для i от 1 до N-1 | циклы по элементам, расположенным
нц для j от i+1 до N | выше главной диагонали
S2:=S2 + A[i, j]
кц
кц
кон
Исполнение алгоритма
i
j
S1
S2
2
3
1
1
2
0
0+3=3
3+2=5
5+1=6
0
1
2
2
3
3
0+2=2
2+4=6
6+3=9
Блок-схема (фрагмент)
Turbo Pascal
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.