Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка к методу мин стоимости_1.doc
Скачиваний:
2
Добавлен:
19.11.2018
Размер:
375.81 Кб
Скачать

Заключение

В курсовом проекте были рассмотрены следующие вопросы:

  • Разработан алгоритм метода решения поставленной задачи;

  • Написанная программа, пригодная для использования

Задачей данного курсового проекта являлось разработать программный продукт «Решение транспортной задачи методом минимальной стоимости» с использованием таблиц в Delphi.

Для достижения данной цели в первом разделе курсового проекта была дана теория решения данной задачи, которой подчиняется данный курсовой проект.

Во второй части курсового проекта изложено описание программной реализации данной задачи, функциональные возможностей программы, требования к работе с программным продуктом и руководство к загрузке и эксплуатации

Как известно, по степени развития утомления работа на ЭВМ стоит на втором месте после работы водителей автобусов. Поэтому для обеспечения безопасности работы с видеотерминалами необходимо проследить соответствие условий работы нормам безопасности. Критерии данного исследования изложены в третьем разделе пояснительной записки, касающемся вопросов охраны труда.

Список используемой литературы.

1

2

3

4

5

Приложение а

Рисунок 1 – Вход в программу

Рисунок 2 – Рабочее окно

Рисунок 3 – Заполнение случайными числами

Рисунок 4 – Заполнение вручную

Рисунок 5 – Принятие данных

Рисунок 6 – Обработка открытой формы условий транспортной задачи

Рисунок 7 – Результат

Приложение в

unit Unit1_1;

interface

uses

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

Dialogs, Grids, StdCtrls, Buttons, Menus;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

StringGrid2: TStringGrid;

Edit3: TEdit;

Label3: TLabel;

GroupBox1: TGroupBox;

Button4: TButton;

CheckBox1: TCheckBox;

Button5: TButton;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N4: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

PopupMenu1: TPopupMenu;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Button4Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

n,m,s1,s2:integer;

ishod:array [1..100,1..100] of integer;

zap,potr:array [1..100] of integer;

s,o,q:string;

activ:integer;

VHODIM:boolean;

{ Public declarations }

end;

var

Form1: TForm1;

ac1,ac2:boolean;

implementation

uses Unit2, Unit5, Unit4;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var s1,s2,i,j,a,b:integer; s:string;

begin

Edit1.Enabled:=false;

Edit2.Enabled:=false;

Label1.Enabled:=false;

Label2.Enabled:=false;

Label3.Enabled:=true;

Edit3.Enabled:=true;

BitBtn1.Enabled:=true;N8.Enabled:=true;N13.Enabled:=true;

CheckBox1.Enabled:=false;

N5.Enabled:=false;

n:=strtoint(Edit1.Text);

m:=strtoint(Edit2.Text);

StringGrid1.ColCount:=m+2;

StringGrid1.RowCount:=n+2;

StringGrid1.FixedCols:=1;

StringGrid1.FixedRows:=1;

StringGrid1.FixedColor:=clmenu;

StringGrid2.ColCount:=m+1;

StringGrid2.RowCount:=n+1;

StringGrid2.FixedCols:=1;

StringGrid2.FixedRows:=1;

StringGrid2.FixedColor:=clmenu;

for i:=1 to n do

for j:=1 to m do

ishod[i,j]:=random(50);

while s<>'2' do

begin

for i:=1 to n do begin

a:= random(300);

s1:=s1+a;

zap[i]:=a;

StringGrid1.Cells[m+1,i]:=inttostr(zap[i]);

end;

for j:=1 to m do begin

b:= random(300);

s2:=s2+b;

potr[j]:=b;

StringGrid1.Cells[j,n+1]:=inttostr(potr[j]);

end;

if s1=s2 then s:='2' else

s1:=0; s2:=0;

end;

for i:=1 to m do begin

s:=inttostr(i);

StringGrid1.Cells[i,0]:='Пункт назначения'+s;

end;

for j:=1 to n do begin

s:=inttostr(j);

StringGrid1.Cells[0,j]:='Пункт отправления'+s;

end;

StringGrid1.Cells[m+1,0]:='Запасы';

StringGrid1.Cells[0,n+1]:='Потребности';

for i:=1 to n do

for j:=1 to m do

StringGrid1.Cells[j,i]:=inttostr(ishod[i,j]);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

form2.close;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

case Key of

'0'..'9',#8: ; // цифры и <Backspase>

#13: Edit2.SetFocus; // клавиша <Enter>

else Key := Chr(0);

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

case Key of

'0'..'9',#8: ; // цифры и <Backspase>

#13: Edit2.SetFocus; // клавиша <Enter>

else Key := Chr(0);

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

var i,j:integer;

begin

CheckBox1.Enabled:=false;

Button1.Enabled:=false; N11.Enabled:=false;

Button5.Enabled:=true;N7.Enabled:=true;N18.Enabled:=true;

N6.Enabled:=false;

n:=strtoint(Edit1.Text);

m:=strtoint(Edit2.Text);

StringGrid1.ColCount:=m+2;

StringGrid1.RowCount:=n+2;

StringGrid1.FixedCols:=1;

StringGrid1.FixedRows:=1;

StringGrid1.FixedColor:=clmenu;

StringGrid2.ColCount:=m+1;

StringGrid2.RowCount:=n+1;

StringGrid2.FixedCols:=1;

StringGrid2.FixedRows:=1;

StringGrid2.FixedColor:=clmenu;

for i:=1 to m do begin

s:=inttostr(i);

StringGrid1.Cells[i,0]:='Пункт назначения'+s;

end;

for j:=1 to n do begin

s:=inttostr(j);

StringGrid1.Cells[0,j]:='Пункт отправления'+s;

end;

StringGrid1.Cells[m+1,0]:='Запасы';

StringGrid1.Cells[0,n+1]:='Потребности';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Button1.Enabled:= false;N11.Enabled:=false;

Button4.Enabled:= false;N17.Enabled:=false;

Button5.Enabled:= false;N7.Enabled:=false;N18.Enabled:=false;

BitBtn1.Enabled:= false;N8.Enabled:=false; N13.Enabled:=false;

CheckBox1.Enabled:= false;

Edit3.Enabled:= false;

Label3.Enabled:= false;

StringGrid1.Enabled:= false;

StringGrid2.Enabled:= false;

end;

procedure TForm1.Edit1Change(Sender: TObject);

begin

if (length(Edit1.Text)<>0) and (length(edit2.Text)<>0) then begin

ac1:=true;Button1.Enabled:= true;CheckBox1.Enabled:= true;

StringGrid1.Enabled:=true;StringGrid2.Enabled:=true;

N5.Enabled:=true;N4.Enabled:=true; N11.Enabled:=true;

end else begin

ac1:=false;Button1.Enabled:= false;CheckBox1.Enabled:= false;

StringGrid1.Enabled:=false;StringGrid2.Enabled:=false;

N5.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;

end;

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin

if (length(Edit1.Text)<>0) and (length(edit2.Text)<>0) then begin

ac1:=true;Button1.Enabled:= true;CheckBox1.Enabled:= true;

StringGrid1.Enabled:=true;StringGrid2.Enabled:=true;

N5.Enabled:=true;N4.Enabled:=true;N11.Enabled:=true;end

else begin

ac1:=false;Button1.Enabled:= false;CheckBox1.Enabled:= false;

StringGrid1.Enabled:=false;StringGrid2.Enabled:=false;

N5.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;

end;

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

StringGrid1.Options:=[goEditing];

activ:=activ+1;

Edit1.Enabled:=false;

Edit2.Enabled:=false;

Label1.Enabled:=false;

Label2.Enabled:=false;

N6.Enabled:=true;

if CheckBox1.Checked=true then begin

if ac1=true then begin

Button4.Enabled:=true;N6.Enabled:=true;N17.Enabled:=true;

Button1.Enabled:=false;N4.Enabled:=false;N11.Enabled:=false;

end;

end else begin

Button4.Enabled:=false;N6.Enabled:=false;N17.Enabled:=false;

Button1.Enabled:=true;N4.Enabled:=true;N11.Enabled:=true;

end;

end;

procedure TForm1.Button5Click(Sender: TObject);

var i,j,Jenya:integer;

begin

Jenya:=0;

for i:=1 to n+1 do

for j:=1 to m+1 do

if StringGrid1.Cells[j,i]<>'' then Jenya:=Jenya+1;

if Jenya=(((n+1)*(m+1))-1) then begin

BitBtn1.Enabled:=true; N8.Enabled:=true; N13.Enabled:=true;

Label3.Enabled:=true;

Edit3.Enabled:=true;

Button4.Enabled:=false; N8.Enabled:=true;N17.Enabled:=false;

N6.Enabled:=false;

N5.Enabled:=false;

n:=strtoint(Edit1.Text);

m:=strtoint(Edit2.Text);

s1:=0;s2:=0;

for i:=1 to n do begin

s1:=s1+strtoint(StringGrid1.Cells[m+1,i]);

end;

for j:=1 to m do begin

s2:=s2+strtoint(StringGrid1.Cells[j,n+1]);

end;

if s1<>s2 then begin

{showmessage('Для решения данной задачи необходимо, чтобы суммы запасов и потребностей совпадали');

exit;}form5.Show;

end else begin

for i:=1 to n do

for j:=1 to m do

ishod[i,j]:=strtoint(StringGrid1.Cells[j,i]);

for j:=1 to m do begin

potr[j]:=strtoint(StringGrid1.Cells[j,n+1]);

end;

for i:=1 to n do begin

zap[i]:=strtoint(StringGrid1.Cells[m+1,i]);

end;

Button5.Enabled:=false;N7.Enabled:=false;N18.Enabled:=false;

showmessage('Все введенные Вами данные приняты программой');

exit;

end;

end else begin

ShowMessage('Введите записи во все поля таблицы!!!');

exit;

end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var spez:array[1..100,1..100]of integer;

i,j,dx,min,max,sh,str,stl,k,l,i1,stoim,dlas1:integer;

vyh:boolean; mar:string;

begin

StringGrid2.Cells[0,0]:='Еденица продукции';

for i:=1 to n do

for j:=1 to m do

StringGrid2.Cells[j,i]:=inttostr(0);

for i:=1 to n do

for j:=1 to m do

spez[i,j]:=ishod[i,j];

vyh:=false;

while vyh<>true do

begin

dx:=0; sh:=0;max:=0; min:=0;

for i:=1 to n do

for j:=1 to m do

if spez[i,j]=(-1) then dx:=dx+1;

if dx=m*n then vyh:=true;

if dx<(m*n) then

begin

for i:=1 to n do

for j:=1 to m do

if spez[i,j]<>(-1) then min:=spez[i,j];

for i:=1 to n do

for j:=1 to m do

if (spez[i,j]<>(-1))and(spez[i,j]<min) then min:=spez[i,j];

for i:=1 to n do

for j:=1 to m do

if spez[i,j]=min then sh:=sh+1;

if sh=1 then

begin

for i:=1 to n do

for j:=1 to m do

if spez[i,j]=min then

begin

str:=i;

stl:=j;

end;

end;

if sh>1 then

begin

for i:=1 to n do

for j:=1 to m do

if spez[i,j]=min then

begin

for k:=1 to n do

if (k<>i)and(spez[k,j]>max) then

begin

max:=spez[k,j];

str:=i;

stl:=j;

end;

for l:=1 to m do

if (l<>j)and(spez[i,l]>max) then

begin

max:=spez[i,l];

str:=i;

stl:=j;

end;

end;

end;

if zap[str]<potr[stl] then

begin

StringGrid2.Cells[stl,str]:=inttostr(zap[str]);

potr[stl]:=potr[stl]-zap[str];

zap[str]:=0;

for i1:=1 to m do

spez[str,i1]:=-1;

end;

if potr[stl]<zap[str] then

begin

StringGrid2.Cells[stl,str]:=inttostr(potr[stl]);

zap[str]:=zap[str]-potr[stl];

potr[stl]:=0;

for i1:=1 to n do

spez[i1,stl]:=-1;

end;

if zap[str]=potr[stl] then

begin

StringGrid2.Cells[stl,str]:=inttostr(zap[str]);

potr[stl]:=0;

zap[str]:=0;

for i1:=1 to n do

spez[i1,stl]:=-1;

for i1:=1 to m do

spez[str,i1]:=-1;

end;

end;

end;

stoim:=0;

for i:=1 to n do

for j:=1 to m do

begin

stoim:=stoim+(strtoint(StringGrid2.Cells[j,i])*ishod[i,j]);

end;

inttostr(stoim);

Edit3.Text:=inttostr(stoim);

Button1.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;

BitBtn1.Enabled:=false;N8.Enabled:=false; N13.Enabled:=false;

BitBtn2.Enabled:=true;N9.Enabled:=true; N14.Enabled:=true;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var i,j:integer;

begin

CheckBox1.Checked:=false;

BitBtn2.Enabled:=false;N9.Enabled:=false;N14.Enabled:=false;

for i:=1 to n do

for j:=1 to m do

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

for i:=1 to n+1 do

for j:=1 to m+1 do

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

Label1.Enabled:=true;

Label2.Enabled:=true;

Edit1.Enabled:=true;

Edit2.Enabled:=true;

Edit1.Text:='';

Edit2.Text:='';

m:=0;

n:=0;

activ:=0;

StringGrid1.ColCount:=1;

StringGrid1.RowCount:=1;

StringGrid2.ColCount:=1;

StringGrid2.RowCount:=1;

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

Label3.Enabled:=false;

Edit3.Text:='';

Edit3.Enabled:=false;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Buttons, Mask,Registry, ExtCtrls;

type

TForm2 = class(TForm)

MaskEdit1: TMaskEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

StaticText1: TStaticText;

Bevel1: TBevel;

procedure BitBtn3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

pass,newpass:STRING;

VHODIM:boolean;

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit3, Unit1_1, Unit4;

{$R *.dfm}

procedure TForm2.BitBtn3Click(Sender: TObject);

begin

Form2.Enabled:=False;

form3.Show;

end;

procedure TForm2.FormActivate(Sender: TObject);

begin

MaskEdit1.Text := '';

MaskEdit1.SetFocus;

with TRegistry.Create do

begin

RootKey := HKEY_LOCAL_MACHINE;

OpenKey('Software', True);

if not KeyExists('MyProject') then CreateKey('MyProject');

OpenKey('MyProject', True);

if not ValueExists('Password') then begin

newpass := '';

WriteString('Password', newpass);

end

else

pass := ReadString('Password');

end;

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

if MaskEdit1.Text = pass then begin

{- ????? ?????? ????????, ??????? ??????????, ???? ?????? ?????? ????????? -}

Form4.Show;

Form2.Hide;

VHODIM:=true;

end

else MaskEdit1.SetFocus;

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

Close;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Mask,Registry, ExtCtrls;

type

TForm3 = class(TForm)

MaskEdit1: TMaskEdit;

MaskEdit2: TMaskEdit;

MaskEdit3: TMaskEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Bevel1: TBevel;

procedure FormActivate(Sender: TObject);

procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit3KeyPress(Sender: TObject; var Key: Char);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

v:boolean;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm3.FormActivate(Sender: TObject);

begin

v:=False;

MaskEdit1.Text := '';

MaskEdit2.Text := '';

MaskEdit3.Text := '';

MaskEdit1.Enabled := true;

MaskEdit1.SetFocus;

MaskEdit2.Enabled := false;

MaskEdit3.Enabled := false

end;

procedure TForm3.MaskEdit1KeyPress(Sender: TObject; var Key: Char);

begin

if (key = #13) and (MaskEdit1.Text = Form2.pass) then

begin

MaskEdit2.Enabled := true;

MaskEdit1.Enabled := false;

MaskEdit2.SetFocus;

end;

end;

procedure TForm3.MaskEdit2KeyPress(Sender: TObject; var Key: Char);

begin

if key = #13 then begin

MaskEdit3.Enabled := true;

MaskEdit3.SetFocus;

MaskEdit2.Enabled := false;

end;

end;

procedure TForm3.MaskEdit3KeyPress(Sender: TObject; var Key: Char);

begin

if (key = #13) and (MaskEdit2.Text = MaskEdit3.Text) then begin

with TRegistry.Create do

begin

RootKey := HKEY_LOCAL_MACHINE;

OpenKey('Software', True);

if not KeyExists('MyProject') then CreateKey('MyProject');

OpenKey('MyProject', True);

WriteString('Password', MaskEdit3.Text);

end;

v:=True;

Form3.Hide;

Form2.Enabled:=True;

end;

end;

procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

Canclose:=v;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls;

type

TForm4 = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Timer1: TTimer;

procedure FormCreate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

sss:Boolean;

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit1_1, Unit2;

{$R *.dfm}

var

Back, Picture: TBitMap; // фон и картинка

BackRct : TRect; // положение и размер области фона,

// которая должна быть восстановлена

x,y:integer; // текущее положение картинки

W,H: integer; // размеры картинки

procedure TForm4.FormCreate(Sender: TObject);

begin

{ Свойству AutoSize обязательно надо

присвоить значение False. Это можно

сделать во время создания формы.

}

sss:=False;

Image1.AutoSize := False;

// создать два объекта - битовых образа

Back := TBitmap.Create; // фон

Picture := TBitmap.Create; // картинка

// загрузить и вывести фон

Back.LoadFromFile('11.bmp');

Image1.Width := Back.Width;

Image1.Height := Back.Height;

Image1.Canvas.Draw(0,0,Back);

// загрузить картинку, которая будет двигаться

Picture.LoadFromFile('22.bmp');

W := Picture.Width;

H := Picture.Height;

// определим "прозрачный" цвет

Picture.Transparent := True;

// прозрачный цвет картинки определяет

// левый верхний пиксел картинки

Picture.TransParentColor := Picture.Canvas.Pixels[1,1];

// начальное положение картинки

x := -W;

y := 320;

// определим сохраняемую область фона

BackRct:=Bounds(x,y,W,H);

end;

procedure TForm4.Timer1Timer(Sender: TObject);

begin

if Form2.VHODIM=true then begin

// восстановлением фона удалим рисунок

Image1.Canvas.CopyRect(BackRct,Back.Canvas,BackRct);

x:=x+100;

if (x > Image1.Width)and(Form2.VHODIM=true)and (sss=false) then begin

Form1.Show;Form4.Hide;sss:=true;

end;

if x > Image1.Width then

x:=-W;

// определим сохраняемую область фона

BackRct:=Bounds(x,y,W,H);

// выведем рисунок

Image1.Canvas.Draw(x,y,Picture);

end;

end;

procedure TForm4.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

// освободим память, выделенную

// для хранения битовых образов

Back.Free;

Picture.Free;

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

Form1.Show;

form4.Hide;

end;

end.

unit Unit5;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm5 = class(TForm)

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label1: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

sogl:boolean;

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit1_1;

{$R *.dfm}

procedure TForm5.BitBtn1Click(Sender: TObject);

var i,j:integer;

begin

sogl:=true;

Form1.Button5.Enabled:=False;

Form1.N7.Enabled:=False;

Form1.N18.Enabled:=False;

if Form1.s1<Form1.s2 then begin

Form1.n:=Form1.n+1;

Form1.StringGrid1.ColCount:=Form1.m+2;

Form1.StringGrid1.RowCount:=Form1.n+2;

Form1.StringGrid1.FixedCols:=1;

Form1.StringGrid1.FixedRows:=1;

Form1.StringGrid1.FixedColor:=clmenu;

Form1.StringGrid2.ColCount:=Form1.m+1;

Form1.StringGrid2.RowCount:=Form1.n+1;

Form1.StringGrid2.FixedCols:=1;

Form1.StringGrid2.FixedRows:=1;

Form1.StringGrid2.FixedColor:=clmenu;

for i:=1 to Form1.m do begin

Form1.s:=inttostr(i);

Form1.StringGrid1.Cells[i,0]:='Пункт назначения'+Form1.s;

end;

for j:=1 to Form1.n do begin

Form1.s:=inttostr(j);

Form1.StringGrid1.Cells[0,j]:='Пункт отправления'+Form1.s;

end;

Form1.StringGrid1.Cells[Form1.m+1,0]:='Запасы';

Form1.StringGrid1.Cells[0,Form1.n+1]:='Потребности';

for j:=1 to Form1.m do begin

Form1.StringGrid1.Cells[j,Form1.n+1]:=Form1.StringGrid1.Cells[j,Form1.n];

Form1.StringGrid1.Cells[j,Form1.n]:='0';

end;

Form1.StringGrid1.Cells[Form1.m+1,Form1.n]:=inttostr(Form1.s2-Form1.s1);

Form5.Close;

end;

if Form1.s1>Form1.s2 then begin

Form1.m:=Form1.m+1;

Form1.StringGrid1.ColCount:=Form1.m+2;

Form1.StringGrid1.RowCount:=Form1.n+2;

Form1.StringGrid1.FixedCols:=1;

Form1.StringGrid1.FixedRows:=1;

Form1.StringGrid1.FixedColor:=clmenu;

Form1.StringGrid2.ColCount:=Form1.m+1;

Form1.StringGrid2.RowCount:=Form1.n+1;

Form1.StringGrid2.FixedCols:=1;

Form1.StringGrid2.FixedRows:=1;

Form1.StringGrid2.FixedColor:=clmenu;

for i:=1 to Form1.m do begin

Form1.s:=inttostr(i);

Form1.StringGrid1.Cells[i,0]:='Пункт назначения'+Form1.s;

end;

for j:=1 to Form1.n do begin

Form1.s:=inttostr(j);

Form1.StringGrid1.Cells[0,j]:='Пункт отправления'+Form1.s;

end;

Form1.StringGrid1.Cells[Form1.m+1,0]:='Запасы';

Form1.StringGrid1.Cells[0,Form1.n+1]:='Потребности';

for j:=1 to Form1.n do begin

Form1.StringGrid1.Cells[Form1.m+1,j]:=Form1.StringGrid1.Cells[Form1.m,j];

Form1.StringGrid1.Cells[Form1.m,j]:='0';

end;

Form1.StringGrid1.Cells[Form1.m,Form1.n+1]:=inttostr(Form1.s1-Form1.s2);

Form5.Close;

end;

for i:=1 to Form1.n do

for j:=1 to Form1.m do

Form1.ishod[i,j]:=strtoint(Form1.StringGrid1.Cells[j,i]);

for j:=1 to Form1.m do begin

Form1.potr[j]:=strtoint(Form1.StringGrid1.Cells[j,Form1.n+1]);

end;

for i:=1 to Form1.n do begin

Form1.zap[i]:=strtoint(Form1.StringGrid1.Cells[Form1.m+1,i]);

end;

end;

procedure TForm5.BitBtn2Click(Sender: TObject);

begin

close;

end;

end.