📄 shuru.pas
字号:
unit shuru;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
const long=250;//定义常量控制数组长度
type
Tfrmshuru = class(TForm)
panel2: TPanel;
Memo1: TMemo;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
RadioGroup1: TRadioGroup;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type myarray=array[1..long] of array[0..long] of real;
type myarray2=array[0..long] of array[0..long] of tedit;
{----------自定义两种类型,供输入数据和数组计算使用-------------}
var
frmshuru: Tfrmshuru;
m,n:integer;
A:myarray;
b:array[1..long] of real;
{----定义几个全局变量。实现数据传递------------------------------}
implementation
uses jisuan;
var shuru1:myarray2;
{$R *.DFM}
procedure Tfrmshuru.BitBtn1Click(Sender: TObject);
var i,j:integer;
begin
if (edit1.text<>'') and (edit2.text<>'') then
begin
try
for i:=1 to m+1 do
for j:=1 to n+2 do
shuru1[i,j].free;
finally
m:=0;n:=0;
m:=strtoint(edit1.text); //输入不等式约束条件个数m:
n:=strtoint(edit2.text); //输入不等式变量个数n;
for i:=1 to m+1 do
for j:=1 to n+2 do
begin
shuru1[i,j]:=tedit.Create(self);
shuru1[i,j].parent:=panel2;
shuru1[i,j].Width:=40;
shuru1[i,j].left:=30+(j-1)*shuru1[i,j].Width;
shuru1[i,j].top:=30+(i-1)*shuru1[i,j].Height;
end;
end;
{-------动态创建控件数组,以供输入系数矩阵、目标函数系数等初始数据----}
shuru1[1,1].SetFocus;
BitBtn2.Enabled:=true;
if m>5 then
Panel2.Height:=(m+1)*shuru1[1,1].height+30+20+memo1.Height;
frmshuru.Height:=Panel1.Height+Panel2.height+30;
{----------控制界面--------------------------------------------------}
end
else showmessage('输入条件不完善,请补充');
end;
procedure Tfrmshuru.BitBtn2Click(Sender: TObject);
var i,j:integer;opt:array[1..long] of integer;
begin
for i:=1 to long do
for j:=0 to long do A[i,j]:=0;
for i:=1 to long do b[i]:=0;
for i:=1 to long do opt[i]:=0;
{---------------初始化变量---------------------------------------}
for i:=1 to m+1 do
begin
if shuru1[i,n+2].text<>'' then A[i,0]:=strtofloat(shuru1[i,n+2].text);
if shuru1[i,n+1].text<>'' then opt[i]:=strtoint(shuru1[i,n+1].text);
for j:= 1 to n do if shuru1[i,j].text<>'' then
A[i,j]:=strtofloat(shuru1[i,j].text);
end;
if RadioGroup1.Items[RadioGroup1.ItemIndex] = 'Max' then
for j:=1 to n do A[m+1,j]:=-A[m+1,j];
leixing:=RadioGroup1.Items[RadioGroup1.ItemIndex];
for i:=1 to m do
A[i,n+i]:=1;
{------------------------标准化处理------------------------------}
for j:=1 to n do b[j]:=A[m+1,j];
{-------------------- 保留初始目标系数值------------------------}
frmjisuan.show;
frmjisuan.BitBtn4.Enabled:=True;
end;
procedure Tfrmshuru.FormCreate(Sender: TObject);
begin
BitBtn2.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -