Дан массив A(m,n). Из элементов лежащих выше главной диагонали найти максимальный элемент, а ниже главной-отрицательный минимальный элемент. Найти сумму элементов, лежащих на главной диагонали.

program Massiv;

uses Crt;

type
  matr = array[1..10,1..15] of Real;

procedure Vvod_Matr(var X:matr; var n,m:byte);
label Error;
var
  i,j: byte;
begin
  Error: WriteLn('Введите');
  Write('количество строк (n<=10): ');
  ReadLn(n);
  Write('количество столбцов (m<=15): ');
  ReadLn(m);
  if (n>10) or (m>15) then goto Error;
  WriteLn('Введите элементы матрицы:');
  for i:=1 to n do
  for j:=1 to m do
  begin
    Write('[',i,',',j,']: ');
    ReadLn(X[i,j]);
  end;
end;

procedure Vyvod_Matr(X:matr; n,m:byte);
var
  i,j: byte;
begin
  for i:=1 to n do
  begin
    for j:=1 to m do Write(X[i,j]:7:2);
    WriteLn;
  end;
end;

function Prov_Matr(n,m:byte): boolean;
begin
  if n=m then Prov_Matr:=true
  else Prov_Matr:=false;
end;

procedure Max_Min_Sum_Matr(X:matr; n,m:byte);
var
  i,j: byte;
  min,max,sum: real;
begin
  min:=1000000;
  max:=X[1,2];
  sum:=0;
  for i:=1 to n do
  begin
    Sum:=Sum+X[i,i];
    for j:=1 to m do
    begin
      if i>j then
      if (X[i,j]<min) and (X[i,j]<0) then min:=X[i,j];
      if i<j then
      if X[i,j]>max then max:=X[i,j];
    end;
  end;
  WriteLn('Сумма главного диагонали в матрице: ',sum:5:2);
  WriteLn('Максимальный элемент выше главной диагонали в матрице: ',max:5:2);
  if min<0 then WriteLn('Отрицательный минимальный элемент ниже главной диагонали в матрице: ',min:5:2)
  else WriteLn('Нет отрицательного минимального элемента ниже главной диагонали в матрице.');
end;

VAR
  A: matr;
  nA,mA: byte;

BEGIN
  ClrScr;
  WriteLn('Ввод матрицы А:');
  Vvod_Matr(A,nA,mA);
  WriteLn('Вывод матрицы А:');
  Vyvod_Matr(A,nA,mA);
  if Prov_Matr(nA,mA) then Max_Min_Sum_Matr(A,nA,mA)
  else WriteLn('Матрица не квадратная, выполнение задачи невозможна.');
  ReadLn;
END.