В массиве A(N, N) вычислить две суммы элементов, расположенных ниже и выше главной диагонали — Pascal(Паскаль)

{       Пример 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.

Leave a Comment

84 + = 91