Тақырыбы: Динамикалық бағдарламалау.
Мақсаты: динамикалық құрылымды мәліметтер қолданылатын қосымшаларды құрып үйрену.
Қажетті құралдар мен материалдар: ДК, Delphi ортасы.
Мазмұны мен жұмысты орындау реті
9.1 Динамикалық массивтерді қолдану
Тапсырма:A={aij},мұндағыi=1,2,…, m; j=1,2,…, nматрицасының элементтерінің ішінен ең үлкен және ең кіші мәндерін есептейтін қосымша құру. mжәнеnмәндері қолданушымен интерфейс панелінде беріледі, ал A матрицасының элементтері кездейсоқ сандар генераторы көмегімен анықталады.
Құрылатын қосымша интерфейсінің бір нұсқасы 9.1-суретте көрсетілген.

Label

SpinEdit

Button
Label

Label
StringGrid
9.1-сурет
Модуль тексті
Unit UnDinMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, Grids, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
Label2: TLabel;
Label5: TLabel;
Label3: TLabel;
Button1: TButton;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ 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
m:=6;
n:=8;
SpinEdit1.Text:='6';
SpinEdit2.Text:='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.Button1Click(Sender: TObject);
label 1;
var
i,j,k,l,r:integer;
begin
Randomize;
GetMem(pA,4*m);
for i :=1 to m do
begin
GetMem(pA^[i],SizeOf(integer)*n);
pA^[1]^[1]:=Random(1000);
for j:=1 to n do
begin
1: r:=Random(1000);
for k:=1 to i do
for l:=1 to j do
if r=pA^[k]^[l] then
goto 1;
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 pA^[i]^[j]<min then
min:=pA^[i]^[j]
else
if pA^[i]^[j]>max then
max:=pA^[i]^[j];
Label7.Caption:=IntToStr(min);
Label9.Caption:=IntToStr(max);
for i:=1 to m do
FreeMem(pA^[i],SizeOf(integer)*n);
FreeMem(pA,4*m);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1.Canvas do
if StringGrid1.Cells[Col,Row]=IntToStr(min) then
begin
Brush.Color:=clGreen;
FrameRect(Rect);
end
else
if StringGrid1.Cells[Col,Row]=IntToStr(max) then
begin
Brush.Color:=clRed;
FrameRect(Rect);
end
end;
end.

Нет комментариевНе стесняйтесь поделиться с нами вашим ценным мнением.
Текст