Программаның логикалық құрылымы

1-40.зауыттар санын, қоймалар санын, өндірілетін өнім, тұтынатын өнім және тасу құнын енгізу.

41.stringgrid2 ұзындығын және колонка санын табу.

42.b массивінің индексі.

43.g массивінің индексі.

44.жол нөмірі.

45.қатар нөмірі.

46-47.матрица өлшемі.

48.текстік файл.

49-51.массив өлшемдері.

52.h cуммасы.

89-90.массивті d көшіреміз,қорытынды файлға жазылу үшін.

102-110.жолдан min табу.

111.егер табылса,

112-118.онда қосу.

146.егер элемент нөлге тең болса,

149.жол нөмірін сақтау.

150.қатар нөмірін сақтау.

156.0-дік элемент табылған қатардан min табу

160.0-дік элемент табылған қатардан min табу.

162.элементтнрді қосу.

164-171.осы элементтерден max табу.

188-191.max табылған жерден қатар мен жолды сызу.

219. Матрица результаты.

235-248. соңғы қорытынды.

250. s-ті f (1)файлына жазу.

261.f(1)файлын жабу.

263-266. форма 2 көрсету.

267-270. форма 3 көрсету.

271-275. барлық формаларды жабу.

Енгізілген мәліметтер

программаның логикалық құрылымы - student2.ru

Шығарылған мәліметтер

программаның логикалық құрылымы - student2.ru

ОРЫТЫНДЫ

Бұл курстық жұмысты орындау барысында операцияны зерттеудің негізгі принциптерімен таныстық. Есептің шешімін табу үшін курс барысында өткен операцияны зерттеу әдістерінің ішіндегі Коммивояжер есебінің әдісі

Литтл алгоримін практика жүзінде қолдануды үйрендік. Қолмен есептеу барысында табылған шешімді Delphi7 ортасында жазылған программамен тексеру арқылы ол мәндердің бір-біріне сәйкес келгеніне көз жеткіздім.

Сондықтан, мен өзімнің бұл курстық жұмыс тапсырмамды қоғамның көп болмаса да,қажетті салалары үшін тек қана пайдалы әсер береді деп тұжырымдаймын.

Қорыта келе, біз химиялық агрегатты айдағаннан кейін, әр түрлі бояулaрды қосылғандағы шығынын кемітудің жалпы соммасын есептедік Бұл курстық жұмысқа көрсетілген есепті формалдаудан кейін Литтл алгоритмімен шығарылуы талап етілген. Сондықтан, Литтл алгориттмін Delphi7 ортасында программа жазу арқылы бұл есептің жауабына қол жеткіздім.

ОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ

1 Вагнер Г. Основы исследования операций. Т.1-3-М.: Мир, 1973

2 Зуховицкий С.Н., Авдеева Л.И. Линейное и выпуклое программирование. М: Наука 1967.

3 Исследование операций (в 2 – х книгах). Кн.1: Методические основы и математические методы / Под ред. Дж.Моудера, С.Элмаграби. М: Мир 1981.

4 Балгабаева Л.Ш. Шешімдер қабылдау теориясы пәнінен электронды оқулық. Алматы: ҚазҰТУ, 2004

5 Таха Х. Введение в исследование операций (в 2 – х книгах).

М: Мир 1985.

6 Балгабаева Л.Ш., Ким Е.Р. Сборник задач. Часть 2. Методические указания к практическим занятием до дисциплинам “Основы исследования операций ” и “Теория принятия решений ” : Алматы. КазНТУ, 2005

Осымша А

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Grids;

type

mas = array [0..20,0..20] of real;

mas2 = array [1..2,1..100] of real;

abba = record

i:integer;

j:integer;

baga:real;

end;

mas1 = array [1..100] of abba;

TForm1 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Button2: TButton;

StringGrid3: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

count,

ind,

flag1,

bn,

gn,

ii,

jj

n:integer;

b,d,a:mas;

INF,OUTF:textfile;

C:mas1;

g:array [1..20] of integer;

e:mas2;

H:real;

implementation

procedure File_Read(var x:textfile; s:string; var y:mas; var a:integer);

var i,j:integer;

begin

AssignFile(x,s);

Reset(x);

read(x,a);

readln(x);

for i:=1 to n do

begin

y[i,0]:=i;

y[0,i]:=i;

end;

for i:=1 to a do

begin

for j:=1 to a do

read(x,y[i,j]);

readln(x);

end;

Closefile(x);

end;

procedure Min_Rows(var x:mas; var Y:real);

var i,j:integer;

flag:boolean;

min:real;

begin

for i:=1 to n do

begin

min:=1000;

flag:=false;

for j:=1 to n do

begin

if ((min > x[i,j]) and (x[i,j]>=0)) then

begin

min:=x[i,j];

flag:=true;

end;

end;

if (flag) then

begin

Y:=Y + min;

for j:=1 to n do

if (x[i,j]>=0) then

x[i,j]:=x[i,j] - min;

end;

end;

end;

procedure Min_Cols(var x:mas; var Y:real);

var i,j:integer;

min:real;

flag:boolean;

begin

for j:=1 to n do

begin

min:=1000;

flag:=false;

for i:=1 to n do

begin

if ((min > x[i,j]) and (x[i,j]>=0)) then

begin

min:=x[i,j];

flag:=true;

end;

end;

if (flag) then

begin

Y:=Y + min;

for i:=1 to n do

if (x[i,j]>=0) then

x[i,j]:=x[i,j] - min;

end;

end;

end;

procedure Find_C(var x:mas1; var y:integer; var max:real);

var i,j,k:integer;

min:real;

begin

y:=0;

for i:=1 to n do

begin

for j:=1 to n do

if ((i <> j) and (a[i,j]=0) and (a[i,j]>-1)) then

begin

inc(y);

C[y].i:=i;

C[y].j:=j;

end;

end;

for k:=1 to y do

begin

min:=1000;

for i:=C[k].i to C[k].i do

for j:=1 to n do

if ((i <> j) and (min > a[i,j]) and (j <> C[k].j) and (a[i,j]>-1)) then

min:=a[i,j];

C[k].baga:=min;

min:=1000;

for j:=C[k].j to C[k].j do

for i:=1 to n do

if ((i <> j) and (min > a[i,j]) and (i <> C[k].i) and (a[i,j]>-1)) then

min:=a[i,j];

C[k].baga:=C[k].baga + min;

end;

max:=-1;

for k:=1 to y do

if (max < C[k].baga) then

begin

max:=C[k].baga;

ii:=C[k].i;

jj:=C[k].j;

end;

end;

procedure Write_in_File();

var i,j,x,y:integer;

s:string;

begin

Append(OUTF);

writeln(OUTF);

writeln(OUTF);

writeln(OUTF,'');

writeln(OUTF);

for i:=1 to n do

if (1 = e[i,1]) then

x:=i;

s:=floattostr(e[x,1])+'-->'+floattostr(e[x,2]);

write(OUTF,s);

for i:=1 to n-1 do

begin

for j:=1 to n do

if (e[x,2] = e[j,1]) then

begin

y:=j;

break;

end;

s:='-->'+floattostr(e[y,2]);

write(OUTF,s);

x:=y;

end;

closefile(OUTF);

end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var i,j:integer;

begin

H:=0;

flag1:=0;

File_Read(INF,'input.txt',a,n);

count:=n;

bn:=n;

ind:=1;

gn:=0;

AssignFile(OUTF,'output.txt');

Rewrite(OUTF);

writeln(OUTF);

for i:=0 to n do

for j:=0 to n do

begin

d[i,j]:=a[i,j];

// b[i,j]:=a[i,j];

end;

Stringgrid1.ColCount:=n+1;

Stringgrid1.RowCount:=n+1;

Stringgrid3.ColCount:=n+1;

Stringgrid3.RowCount:=n+1;

for i:=0 to n do

for j:=0 to n do

if (a[i,j]= -1) then

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

else

Stringgrid1.Cells[j,i]:=floattostr(a[i,j]);

end;

procedure TForm1.Button1Click(Sender: TObject);

var m1,k,i,j,m,flag,p,l:integer;

max:real;

s:string;

begin

dec(count);

Append(OUTF);

m:=0;

Min_Rows(a,H);

Min_Cols(a,H);

Find_C(C,m,max);

edit1.Text:=floattostr(H);

a[jj,ii]:=-1;

e[ind,1]:=ii;

e[ind,2]:=jj;

inc(ind);

Stringgrid3.ColCount:=bn;

Stringgrid3.RowCount:=bn;

dec(bn);

writeln(OUTF);

s:=floattostr(ii)+'-->'+floattostr(jj)+'('+floattostr(d[ii,jj])+') ';

write(OUTF,s);

for i:=1 to n do

a[i,jj]:=-2;

for j:=1 to n do

a[ii,j]:=-2;

l:=0;

for i:=0 to n do

begin

p:=-1;

flag:=0;

for j:=1 to n do

if (a[i,j] = -2) then

inc(flag);

for j:=0 to n do

if ((a[i,j]>-2) and (flag <> n)) then

begin

inc(p);

b[l,p]:=a[i,j];

end;

if (flag <> n) then

inc(l);

end;

for i:=0 to bn do

for j:=0 to bn do

begin

if (b[i,j]= -1) then

Stringgrid3.Cells[j,i]:='x';

if (b[i,j] >= 0) then

Stringgrid3.Cells[j,i]:=floattostr(b[i,j]);

end;

edit2.Text:=floattostr(max);

if (flag1 = 0) then

begin

m1:=m;

Stringgrid2.RowCount:=m;

Stringgrid2.Height:=17*m;

end;

flag1:=1;

for k:=0 to m do

begin

Stringgrid2.Cells[1,k]:=floattostr(C[k+1].baga);

Stringgrid2.Cells[0,k]:='C['+inttostr(C[k+1].i)+ ',' + inttostr(C[k+1].j)+']';

end;

for k:=m to Stringgrid2.RowCount-1 do

begin

Stringgrid2.Cells[1,k]:=' ';

Stringgrid2.Cells[0,k]:=' ';

end;

for i:=0 to n do

for j:=0 to n do

begin

if (a[i,j]= -1) then

begin

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

end;

if (a[i,j]= -2) then

begin

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

end;

if (a[i,j] >= 0) then

Stringgrid1.Cells[j,i]:=floattostr(a[i,j]);

end;

closefile(OUTF);

if (count = 0) then

Button1.Enabled:=false;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Write_in_File();

end;

end.

Наши рекомендации