{ Private declarations }
Public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
Type
Mas = array [1..1] of integer;
pMas = array [1..1] of ^mas;
Var
pA: ^pMas;
m,n,max,min: integer;
procedure TForm1.FormCreate(Sender: TObject);
Begin
SpinEdit1.Text:='6'; // начальное значение m
SpinEdit2.Text:='8'; // начальное значение n
m:=6;
n:=8;
StringGrid1.RowCount:=m; // количество строк
StringGrid1.ColCount:=n; // количество столбцов
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
Begin
m:=StrToInt(SpinEdit1.Text);
StringGrid1.RowCount:=m;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
Begin
n:=StrToInt(SpinEdit2.Text);
StringGrid1.ColCount:=n;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
label 1;
Var
i,j,k,l,r,p: integer;
Begin
Randomize; // инициализация датчика случайных чисел
GetMem(pA,4*m);
for i:=1 to m do
begin // формирование i-й строки массива
GetMem(pA^[i],SizeOf(integer)*n);
for j:=1 to n do
Begin
1: r:=Random(1000); // генерирование случайного числа
for k:=1 to i do
Begin
if k=i then p:=j-1 else p:=n;
for l:=1 to p do
if r=pA^[k]^[l] then goto 1; //если число есть в массиве,
//тогда сгенерировать новое число
end;
pA^[i]^[j]:=r; // случайное число занести в массив
end;
end;
for i:=1 to m do
for j:=1 to n do
StringGrid1.Cells[j-1,i-1]:=IntToStr(pA^[i]^[j]);
max:=pA^[1]^[1];
min:=max;
for i:=1 to m do
for j:=1 to n do
if max<pA^[i]^[j] then max:=pA^[i]^[j]
else if min>pA^[i]^[j] then min:=pA^[i]^[j];
Label8.Caption:=IntToStr(min);
Label9.Caption:=IntToStr(max);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Begin
with StringGrid1.Canvas do
if StringGrid1.Cells[ACol,ARow]=IntToStr(min) then
Begin
Brush.Color:=clGreen;
FrameRect(Rect);
End
else if StringGrid1.Cells[ACol,ARow]=IntToStr(max) then
Begin
Brush.Color:=clRed;
FrameRect(Rect)
End
end;
end.
Пример создания приложения