unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
  const
   Nmax=10;
type
 TArray = array [1..Nmax,1..Nmax] of integer;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    StringGrid1: TStringGrid;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  Array1: TArray;
  N: integer;
  VertSize,HorzSize: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
  if (length(Edit1.Text)<1) or (length(Edit2.Text)<1)  then
 begin
  Application.MessageBox( 'Вы не ввели переменные!!!','Ошибка ввода!!!', mb_OK+MB_ICONERROR);
     exit; end;
   VertSize := StrToInt(Edit1.Text);
  if VertSize<1 then
    begin
      MessageBox(0,'Число столбцов должно быть не меньше 1!','Предупреждение!',MB_OK+MB_ICONWARNING);
      exit; end
  else if VertSize>10 then
    begin
      MessageBox(0,'Число столбцов должно быть не больше 10!','Предупреждение!',MB_OK+MB_ICONWARNING);
      exit; end;
  HorzSize := StrToInt(Edit2.Text);
  if HorzSize<1 then
    begin
      MessageBox(0,'Число строк должно быть не меньше 1!','Предупреждение!',MB_OK+MB_ICONWARNING);
      exit;end
  else if HorzSize>10 then
    begin
      MessageBox(0,'Число строк должно быть не больше 10!','Предупреждение!',MB_OK+MB_ICONWARNING);
      exit; end;
StringGrid1.ColCount := VertSize + 1;
  StringGrid1.RowCount := HorzSize + 1;
 for i:=1 to VertSize do
    begin
      StringGrid1.Cells[i, 0] := 'j='+ IntToStr(i);
      for j:=1 to HorzSize do
        StringGrid1.Cells[0, j] := 'i='+ IntToStr(j);
    end;end;
procedure TForm1.Button2Click(Sender: TObject);
var
  I, J: Integer;
  Col,P,Q: integer;
begin
if (length(Edit1.Text)<1) or (length(Edit2.Text)<1)  then
 begin
  Application.MessageBox( 'Вы не ввели переменные!!!','Ошибка ввода!!!', mb_OK+MB_ICONERROR);
  exit; end;
 for i:=1 to StringGrid1.RowCount-1 do
   for j:=1 to StringGrid1.ColCount-1 do
     Array1[i,j] := StrToInt(StringGrid1.Cells[j,i]);
 Col := 0;
  Label4.Caption:='';
for I := 1 to StringGrid1.RowCount - 1 do
    for J := 1 to StringGrid1.ColCount - 1 do
    begin
      if J = 1 then P := 1000
               else P := Array1[I, J - 1];
      if J = StringGrid1.ColCount - 1 then Q := 0
      else Q := Array1[I, J + 1];
if (Array1[I, J] > P) and (Array1[I, J] < Q) then
        begin
         Inc(Col);
         Label4.Caption:=Label4.Caption+IntToStr(i)+','+IntToStr(j)+'; ';
         end; end;
  Edit3.Text:=IntToStr(Col);
  ShowMessage('Количество особых элементов: ' + IntToStr(Col));
end;
procedure TForm1.Button3Click(Sender: TObject);
var
 i,j: integer;
begin
  randomize;
 for i:=1 to HorzSize do
   for j:=1 to VertSize do
     begin
       Array1[i,j] := random(21); //в данном случае от 0 до 20
       StringGrid1.Cells[j,i] := FloatToStr(Array1[i,j]);
     end;
end;
procedure TForm1.FormCreate(Sender: TObject);
  var i,j:integer;
begin
VertSize := 4;
  HorzSize := 4;
  Edit1.Text := IntToStr(VertSize);
  Edit2.Text := IntToStr(HorzSize);
 StringGrid1.ColCount := VertSize + 1;
  StringGrid1.RowCount := HorzSize + 1;
 StringGrid1.Cells[0,0] := 'A';
for i:=1 to VertSize do
    begin
      StringGrid1.Cells[i, 0] := 'j='+ IntToStr(i);
      for j:=1 to HorzSize do
        StringGrid1.Cells[0, j] := 'i='+ IntToStr(j);
end;end;
end.
