Если целочисленная квадратная матрица симетрична относительно главной диагонали, обнулить все элементы, лежащие выше главной диагонали, и определить сумму элементов лежащих ниже главной диагонали — Pascal(Паскаль)

program zadacha;
{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
  matr = array [1 .. 100, 1 .. 100] of integer;

Var
  k, i, j, n: integer;
  sum: integer;
  A: matr;

Procedure BBOD_A(VAR A: matr);
Var
  i, j: integer;
begin
  write('n=');
  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('Ishodnaia matrica:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      write(A[i, j]:3);
    end;
    writeln;
  end;
end;

Procedure D(Var k: integer);
Var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to n do
    begin
      if A[i, j] = A[j, i] then
        k := k + 1;
    end;
end;

Procedure CYMMA(Var sum: integer);
var
  i, j, m: integer;
begin
  for i := 1 to n do
    for j := 1 to n do
    begin
      if i = j then
        for m := 1 to (i - 1) do
          sum := sum + A[i, m];
    end;
end;

Procedure G(Var A: matr);
var
  i, j, m: integer;
begin
  for i := 1 to n do
    for j := 1 to n do
    begin
      if i = j then
        for m := (i + 1) to n do
          A[i, m] := 0;
    end;
end;

BEGIN
  sum := 0;
  k := 0;
  BBOD_A(A);
  D(k);
  if k <> (sqr(n)) then
    write('matrica ne simetrichna')
  else
    G(A);
  CYMMA(sum);
  writeln('Obrabotannaia matrica:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      write(A[i, j]:3);
    end;
    writeln;
  end;
  writeln('Summa=', sum);
  readln;

END.

Leave a Comment

4 + = 9