Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Список використаної літератури. 1. Г.А.Гайна навчальний посібник з дисципліни «Методи оптимізації:алгоритми,приклади,задачі»К.:КНУБА,2005.-144с




1. Г.А.Гайна навчальний посібник з дисципліни «Методи оптимізації:алгоритми,приклади,задачі»К.:КНУБА,2005.-144с.

2. Культин Н. Б. Программирование в Turbo Pascal 7.0 – Спб.: БХВ – Санкт-Петербург, 1999 – 240 с.

 


 

Додаток 1.

Текст програми

unit Unit1;

interface

uses

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

Dialogs, Grids, StdCtrls, Buttons, Menus, ExtCtrls;

const

maxn = 20;

inf = maxint div 2;

type

TForm1 = class(TForm)

G: TStringGrid;

Label1: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

GroupBox1: TGroupBox;

G1: TStringGrid;

G2: TStringGrid;

GroupBox2: TGroupBox;

Label3: TLabel;

Edit1: TEdit;

BitBtn3: TBitBtn;

Panel1: TPanel;

SpeedButton1: TSpeedButton;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure init(sender: tobject);

procedure floyd;

procedure N3Click(Sender: TObject);

procedure Clear(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure path(i, j: integer);

procedure N6Click(Sender: TObject);

procedure N5Click(Sender: TObject);

private

d, a: array [1..maxn, 1..maxn] of integer;

p: array [1..maxn, 1..maxn] of integer;

n: longint;

str: string;

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementa

procedure TForm1.FormCreate(Sender: TObject);

var i,j: longint;

begin

for i:=1 to G.ColCount do

for j:=1 to G.ColCount do begin

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

G2.Cells[i,j]:=' ' end;

 

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

G1.Cells[0,0]:='G*';

G2.Cells[0,0]:='G`';

for i:=1 to 10 do begin

G.Cells[0,i]:=IntToStr(i);

G1.Cells[0,i]:=IntToStr(i);

G2.Cells[0,i]:=IntToStr(i);

G.Cells[i,0]:=IntToStr(i);

G1.Cells[i,0]:=IntToStr(i);

G2.Cells[i,0]:=IntToStr(i);

//Cells[i,i]:='0';

end; //for

 

end; //procedure

 

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

if (n>0) and (n<=10) then begin

G.Enabled:=True;

G2.Enabled:=True;

BitBtn2.Enabled:=true end

else

MessageDlg('Невірні дані',MtError,[mbOk],0);

end;

 

procedure TForm1.init(sender: tobject);

var

i, j, x, y, nn, z: longint;

begin

N2.Enabled:=true;

 

for i:= 1 to maxn do

for j:= 1 to maxn do

a[i, j]:= inf;

for i:= 1 to maxn do

a[i, i]:= 0;

fillchar(d, sizeof(d), 0);

fillchar(p, sizeof(p), 0);

n:=StrToInt(Edit1.Text);

 

for i:=1 to n do

for j:=1 to n do

if G.Cells[i,j][1] in ['0'..'9'] then

a[i,j]:=StrToInt(G.Cells[i,j]);

floyd;

end;

// реалізація алгоритму Флойда

procedure TForm1.floyd;

var

k, i, j: integer;

begin

for i:= 1 to n do

for j:= 1 to n do

begin

p[i, j]:= i;

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

end;

for k:= 1 to n do

for i:= 1 to n do

for j:= 1 to n do

if d[i, j] > d[i, k] + d[k, j] then

begin

d[i, j]:= d[i, k] + d[k, j];

p[i, j]:= k;

end

for i:=1 to n do

for j:=1 to n do begin

if p[i,j]=i then p[i,j]:=0;

G1.Cells[i,j]:=IntToStr(p[i,j]);

if d[i,j]>=1000 then G2.Cells[i,j]:='#' else

G2.Cells[i,j]:=IntToStr(d[i,j]) end;

 

for i:=1 to n do

for j:=1 to n do

if (p[i,j]=0) and (g.Cells[i,j][1] in ['1'..'9']) then

memo1.Lines.Add(IntToStr(j)+'-->'+IntToStr(i));

memo1.Lines.Add('Всі шляхи, що не перетинаються по ребрам');

memo1.Lines.Add('

for i:=1 to n do

for j:=1 to n do begin

str:='';

if G2.Cells[i,j][1] in ['1'..'9'] then begin

path(j,i);

memo1.Lines.Add(IntToStr(i)+'-->'+str+IntToStr(j)); end; end;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Clear(Sender: TObject);

var i,j: longint;

begin

for i:=1 to G.ColCount do

for j:=1 to G.ColCount do begin

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

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

G2.Cells[i,j]:=' ' end;

memo1.Lines.Clear;

memo1.Lines.Add('Bсі шляхи, що не перетинаються по вершинам:');

memo1.Lines.Add(

end;

procedure TForm1.N2Click(Sender: TObject);

var f: textFile;

i,j: integer;

begin

SaveDlg.Show;

assignFile(f, SaveDlg.LEdit1.Text);

ReWrite(f);

Writeln(f);

Writeln(f,'Таблиця суміжності графа G');

for i:=1 to n do begin

for j:=1 to n do

write(f,G.Cells[i,j],' ');

writeln(f) end;

Writeln(f);

Writeln(f,'Найкоротші шляхи графа G');

for i:=1 to n do begin

for j:=1 to n do

write(f,G2.Cells[i,j],' ');

writeln(f) end;

CloseFile(f);

end;

procedure TForm1.path(i, j: integer);

var k: integer;

begin

k:= P[i,j];

if k=0 then exit;

path(i,k);

str:=str+' '+IntToStr(k)+'-->';

path(k,j);

end;

procedure TForm1.N6Click(Sender: TObject);

begin

AboutBox.Show;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

form3.show;

end;

 

end.




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 258; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.