unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Math, Mxarrays, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    StringGrid2: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  const
     Nmax=10;
  Type
     mas2 = array[1..Nmax,1..Nmax] of extended;
     mas1 = array[1..Nmax,1..Nmax] of extended;
var
  Form1: TForm1;
  A:mas2;
  B:mas1;
  N,M,i,k:integer;
  max:extended;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
  begin
  N:=3;
  M:=3;
    edit1.Text:=floattostr(N);
    edit2.Text:=floattostr(M);
  stringgrid1.RowCount:=N+1;
  stringgrid1.ColCount:=M+1;
  stringgrid2.colcount:=M+1;
  stringgrid1.Cells[0,0]:='Массив А:';
  stringgrid2.Cells[0,0]:='Массив B:';
  randomize();
  for i:=1 to N do
  begin
    for k:=1 to M do
    begin
       stringgrid1.Cells[k,i]:=inttostr(random(40)-20);
    end;
  end;


  for i:=1 to N do
  stringgrid1.Cells[0,i]:='i='+inttostr(i);


  for k:=1 to M do
   begin
  stringgrid2.Cells[k,0]:='max'+inttostr(k);
  stringgrid1.Cells[k,0]:='k='+inttostr(k);
     end;
    end;


procedure TForm1.Button1Click(Sender: TObject);
begin
N:=strtoint(edit1.Text);
M:=strtoint(edit2.Text);

stringgrid1.RowCount:=N+1;
stringgrid1.ColCount:=M+1;
stringgrid2.colcount:=M+1;

for i:=1 to N do stringgrid1.Cells[0,i]:='i='+inttostr(i);
for k:=1 to M do stringgrid1.Cells[k,0]:='k='+inttostr(k);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 try
   for i:=1 to N do
   for k:=1 to M do
 A[k,i]:=strtofloat(stringgrid1.Cells[k,i]);
 except

 on ERangeError do
   begin
  ShowMessage('Выход за пределы массива. Уменьшите размер массива'); Exit;
  end;

 on EConvertError do
   begin
  ShowMessage('В ячейке отсутствует значение либо число введено неравильно'); Exit;
 end;

 else
    begin
  ShowMessage('Возникла неизвестная исключительная ситуация!'); Exit;
 end;
 end;

 try

 for k:=1 to M do
 begin
 max:=A[1,1];
 for i:=1 to N do
  begin
 if A[k,i]>max then max:=A[k,i]
 end;
   stringgrid2.Cells[k,1]:=floattostr(max);
 end;

 except

 on EOverFlow do
   begin
 MessageDlg('Перевыполнение при выполнении операции с плавающей точкой',mtError,[mbCancel],0); Exit;
   end;

 else
   begin
  MessageDlg('Возникла неизвестная исключительная ситуация!',mtError,[mbCancel],0); Exit;
   end;
   end;


  end;

end.


