unit Unit1;

interface

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

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

Type MasA=array[1..Nmax,1..Nmax] of extended;
     MasB=array[1..Nmax] of integer;

var
  Form1: TForm1;
  A: MasA; B: MasB; M,N,i,j,o: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text:='3';
  Edit2.Text:='3';
  M:=StrToInt(Edit1.Text);
  N:=StrToInt(Edit2.Text);
  StringGrid1.ColCount:=M+1;
  StringGrid1.RowCount:=N+1;
  StringGrid2.RowCount:=M+1;
  StringGrid1.Cells[0,0]:='Массив A';
  StringGrid2.Cells[0,0]:='Массив B';
  for i:=1 to M do
    StringGrid1.Cells[i,0]:='i='+IntToStr(i);
  for i:=1 to N do
    StringGrid1.Cells[0,i]:='j='+IntToStr(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  M:=StrToInt(Edit1.Text);
  N:=StrToInt(Edit2.Text);
  StringGrid1.ColCount:=M+1;
  StringGrid1.RowCount:=N+1;
  StringGrid2.RowCount:=M+1;
  for i:=1 to M do
    StringGrid1.Cells[i,0]:='i='+IntToStr(i);
  for i:=1 to N do
    StringGrid1.Cells[0,i]:='j='+IntToStr(i);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
{$R+}
  try
    for i:=1 to M do
    for j:=1 to N do
      A[j,i]:=StrToFloat(StringGrid1.Cells[i,j]);
  except
    on ERangeError do begin ShowMessage('Выход за пределы массива. Уменьшите размеры массива'); Exit; end;
    on EConvertError do begin ShowMessage('В ячейке отсутствует значение либо число введено неправильно'); Exit; end;
    else begin ShowMessage('Возникла неизвестная исключительная ситуация!');Exit; end;
  end;
  try
    for i:=1 to M do begin
      o:=0;
      for j:=1 to N do
        if A[j,i]=0 then o:=o+1;
      if o=N then B[i]:=0 else B[i]:=1;
      StringGrid2.Cells[0,i]:=IntToStr(B[i]);
    end;
  except
    on EInvalidOp do begin MessageDlg('Неправильная операция с плавающей точкой',mtError,[mbCancel],0);Exit; end;
    on ERangeError do begin MessageDlg('Выход за пределы массива. Уменьшите размеры массива',mtError,[mbCancel],0); Exit; end;
    on EOverFlow do begin MessageDlg('Переполнение при выполнении операции с плавающей точкой',mtError,[mbCancel],0);Exit; end;
    else begin MessageDlg('Возникла неизвестная исключительная ситуация!',mtError,[mbCancel],0);Exit; end;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Randomize;
  for i:=1 to M do
  for j:=1 to N do
    StringGrid1.Cells[i,j]:=IntToStr(Random(100));
end;

end.
