Текст модуля Form1

unit Class_Form1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Spin, Grids,

Class_Lin_Obmezh, ExtCtrls;

type

TIVector=array of integer;

TSVector=array of String;

Matrix=array of TIVector;

TForm1 = class(TForm)

StringGrid1: TStringGrid;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

RadioGroup1: TRadioGroup;

StringGrid2: TStringGrid;

Label3: TLabel;

Memo1: TMemo;

Button4: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Button5: TButton;

Button6: TButton;

Button7: TButton;

procedure SpinEdit1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure SpinEdit2Change(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure FormClose(Sender: TObject);

procedure Button7Click(Sender: TObject);

function IsEmpty1(Sender: TObject):boolean;

function IsEmpty2(Sender: TObject):boolean;

end;

var

Form1: TForm1;

SLO_1:SLO;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.ColCount:=3;

StringGrid1.RowCount:=2;

StringGrid1.Cells[0,0]:='a1';

StringGrid1.Cells[1,0]:='=,<=,>=';

StringGrid1.Cells[2,0]:='Limit';

StringGrid2.Cells[0,0]:='x1';

end;

procedure TForm1.FormClose(Sender: TObject);

begin

SLO_1.Free;

end;

//-----------------IsEmpty1,2------------------------------

Function TForm1.IsEmpty1(Sender: TObject):boolean;

begin

result:=StringGrid1.Cells[0,1]='';

end;

Function TForm1.IsEmpty2(Sender: TObject):boolean;

begin

result:=StringGrid2.Cells[0,1]='';

end;

//-----------------Button_Exit-----------------------------

procedure TForm1.Button1Click(Sender: TObject);

begin

Close;

end;

//-----------------Ввід к-сті елементів ЛО та к-сті ЛО-----

procedure TForm1.SpinEdit1Change(Sender: TObject);

var

n,i,j:byte;

begin

Button2.Enabled:=True;

N:=SpinEdit1.Value;

StringGrid1.ColCount:=n+2;

StringGrid2.ColCount:=n;

for i:=0 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

begin

StringGrid1.Cells[i,j]:='';

StringGrid2.Cells[i,j]:='';

end;

for i:=0 to n-1 do

begin

StringGrid1.Cells[i,0]:='a'+IntToStr(i+1);

StringGrid2.Cells[i,0]:='x'+IntToStr(i+1);

end;

StringGrid1.Cells[n,0]:='=,<=,>=';

StringGrid1.Cells[n+1,0]:='Limit';

RadioGroup1Click(Sender);

end;

procedure TForm1.SpinEdit2Change(Sender: TObject);

var

n:byte;

begin

Button2.Enabled:=True;

N:=SpinEdit2.Value;

StringGrid1.RowCount:=n+1;

RadioGroup1Click(Sender);

end;

//-----------------Button Reset----------------------------

procedure TForm1.Button2Click(Sender: TObject);

var

i,j:integer;

begin

SpinEdit1.Value:=1;

SpinEdit2.Value:=1;

StringGrid1.ColCount:=3;

StringGrid1.RowCount:=2;

RadioGroup1.ItemIndex:=0;

for i:=0 to 2 do

for j:=1 to 1 do

StringGrid1.Cells[i,j]:='';

for i:=Memo1.Lines.Count downto 0 do

Memo1.Lines.Delete(i);

StringGrid1.Cells[0,1]:='';

Button2.Enabled:=False;

if SLO_1<>nil then

begin

SLO_1.Free;

SLO_1:=nil;

end;

end;

//-----------------Вибір способу вводу---------------------

procedure TForm1.RadioGroup1Click(Sender: TObject);

var

i,j,k:byte;

begin

randomize;

if RadioGroup1.ItemIndex=1 then

begin

for i:=0 to StringGrid1.ColCount-3 do

for j:=1 to StringGrid1.RowCount-1 do

StringGrid1.Cells[i,j]:=IntToStr(random(10)-5);

for i:=1 to StringGrid1.RowCount-1 do

begin

StringGrid1.Cells[SpinEdit1.Value+1,i]:=IntToStr(random(10));

k:=random(3);

if k=0 then

StringGrid1.Cells[SpinEdit1.Value,i]:='<='

else

if k=1 then

StringGrid1.Cells[SpinEdit1.Value,i]:='>='

else

if k=2 then

StringGrid1.Cells[SpinEdit1.Value,i]:='='

end;

end

else

for i:=0 to StringGrid1.ColCount-1 do

for j:=1 to StringGrid1.RowCount-1 do

StringGrid1.Cells[i,j]:='';

end;

//-----------------Вивід ЛО в Memo та стврення класу-------

procedure TForm1.Button3Click(Sender: TObject);

var

i:integer;

begin

if SLO_1<>nil then

begin

SLO_1.Free;

SLO_1:=nil;

end;

for i:=Memo1.Lines.Count downto 0 do

Memo1.Lines.Delete(i);

if IsEmpty1(Sender) then

begin

ShowMessage('Заповніть таблицю значень');

exit;

end;

SLO_1:=SLO.Create(SpinEdit2.Value);

//-----------------

SLO_1.Set_Sys(StringGrid1);

//-----------------

for i:=0 to high(SLO_1.Into_text) do

Memo1.Lines.Add(SLO_1.Into_text[i]);

end;

//-----------------Button Check Solution-------------------

procedure TForm1.Button4Click(Sender: TObject);

begin

if IsEmpty1(Sender) then

begin

ShowMessage('Заповніть таблицю значень');

exit;

end;

if IsEmpty2(Sender) then

begin

ShowMessage('Не введено жодного можливого розв`язку в таблицю!');

exit;

end;

Button3Click(Sender);

if SLO_1.Check(StringGrid2) then

ShowMessage('Даний розв`язок задовольняє системі лінійних обмежень')

else

ShowMessage('Даний розв`язок HE задовольняє системі лінійних обмежень');

if SLO_1<>nil then

begin

SLO_1.Free;

SLO_1:=nil;

end;

end;

//-----------------Button Open-----------------------------

procedure TForm1.Button5Click(Sender: TObject);

var

F:TextFile;

temp_FName,Str,temp_Str:string;

kilkist_Lo,kilkist_zminnuh,i,j,k:Integer;

begin

if OpenDialog1.Execute then

begin

Button2Click(Sender);

temp_FName:=Opendialog1.FileName;

AssignFile(F,temp_FName);

Reset(F);

readln(F,kilkist_Lo);

readln(F,kilkist_zminnuh);

SpinEdit2.Value:=kilkist_Lo;

SpinEdit1.Value:=kilkist_zminnuh;

//-----------------

for i:=1 to kilkist_Lo do

begin

readln(F,Str);

k:=1;

temp_Str:='';

for j:=1 to length(Str) do

if Str[j]=' ' then

begin

StringGrid1.Cells[k-1,i]:=temp_Str;

temp_Str:='';

k:=k+1;

end

else

temp_Str:=temp_Str+Str[j];

end;

//-----------------

for i:=1 to kilkist_Lo do

begin

Readln(F,Str);

StringGrid1.Cells[kilkist_zminnuh,i]:=Str;

end;

//-----------------

for i:=1 to kilkist_Lo do

begin

Readln(F,Str);

StringGrid1.Cells[kilkist_zminnuh+1,i]:=Str;

end;

//-----------------

CloseFile(F);

end;

end;

//-----------------Button Save-----------------------------

procedure TForm1.Button6Click(Sender: TObject);

var

F:TextFile;

temp_FName:string;

i:byte;

begin

if IsEmpty1(Sender) then

begin

ShowMessage('Заповніть таблицю значень');

exit;

end

else

begin

Button3Click(Sender);

if SaveDialog1.Execute then

begin

temp_FName:=Savedialog1.FileName;

AssignFile(F,temp_FName);

Rewrite(F);

writeln(F,IntToStr(SpinEdit2.Value));

writeln(F,IntToStr(SpinEdit1.Value));

for i:=0 to high(SLO_1.Get_SLO) do

writeln(F,SLO_1.Get_SLO[i].Get_koef_String);

for i:=0 to high(SLO_1.Get_SLO) do

writeln(F,SLO_1.Get_SLO[i].Znak);

for i:=0 to high(SLO_1.Get_SLO) do

writeln(F,IntToStr(SLO_1.Get_SLO[i].Lim));

CloseFile(F);

end;

end;

end;

//-----------------Button Sort Lo--------------------------

procedure TForm1.Button7Click(Sender: TObject);

var

i:byte;

begin

Button3Click(Sender);

if IsEmpty1(Sender) then

exit;

Memo1.Lines.Add('');

SLO_1.Sort_SLO;

for i:=0 to high(SLO_1.Into_text) do

Memo1.Lines.Add(SLO_1.Into_text[i]);

if SLO_1<>nil then

begin

SLO_1.Free;

SLO_1:=nil;

end;

end;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: