Доброго времени суток уважаемые эксперты, у меня возникла проблема с программой на алгоритм Дейкстры. При изменении стоимости путей, путь всё равно не меняется, не знаю как это исправить. Помогите пожалуйста.
private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm} procedure TForm1.N2Click(Sender: TObject); begin if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end;
procedure TForm1.N3Click(Sender: TObject); begin if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FIleName); end; procedure TForm1.Button1Click(Sender: TObject);
var i,j,min:integer; dlinna: array [0..24] of integer; d: array [1..12] of integer; nachalo: array [0..24] of integer; konec: array [0..24] of integer; r: array [0..24] of string[8]; k: integer; put:string[20]; s: string[2]; /////////////////// begin Memo2.Clear; put:=''; d[1]:=0; for i:=2 to 12 do d[i]:=10000; for i:=0 to 24 do r[i]:=memo1.Lines[i]; /////////////////// ///////////////////начало for i:=0 to 24 do for j:=1 to 8 do begin if r[i][j]=',' then begin if j=3 then begin s:=r[i][1]; s:=s+r[i][2]; nachalo[i]:=strtoint(s); end; if j=2 then nachalo[i]:=strtoint(r[i][1]); end; s:=''; end; ///////////////////конец for i:=0 to 24 do for j:=1 to 8 do begin if r[i][j]='=' then begin if j=5 then begin s:=r[i][3]; s:=s+r[i][4]; konec[i]:=strtoint(s); end; if j=4 then konec[i]:=strtoint(r[i][3]); if j=6 then begin s:=r[i][4]; s:=s+r[i][5]; konec[i]:=strtoint(s); end; end; s:=''; end; for i:=0 to 24 do for j:=1 to 8 do begin if r[i][j]='=' then begin if r[i][j+2]<>';' then s:=r[i][j+1]+r[i][j+2] else s:=r[i][j+1]; dlinna[i]:=strtoint(s); end; s:=''; end; k:=1; put:='1'; repeat min:=10000; for i:=0 to 24 do if nachalo[i]=k then begin d[konec[i]]:=d[k]+dlinna[i]; if d[konec[i]]<min then begin min:=d[konec[i]]; k:=konec[i]; end; end; put:=put+' '+inttostr(k); until k=12; memo2.lines.Add(put); label1.Caption := 'Минимальная стоимость: ' + FloatToStr(min); end; procedure TForm1.N5Click(Sender: TObject); begin Close; end;
procedure TForm1.N7Click(Sender: TObject); Var ExB: WORD; begin ExB:=MessageBox(handle,pchar('Программу выполнил студент, Николаенко Антон Юрьевич, группы КТм-701'), pchar('Алгоритм Дейкстры'),0); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo2.Clear; end;
end.
Программа с файлом задания в приложении lab1.rar ( 173.92 килобайт )
Кол-во скачиваний: 443
volvo суть форума и заключается в помощи человеку чем либо..я думаю не лишнее будет ему перейти по ссылке и посмотреть.
Во-первых, это на С/С++, а во-вторых, чего ж ты сам-то рабочий алгоритм не скачиваешь? Иди, качай, коли такой умный, очередь свою кольцевую... Или другим советовать - просто?-----вот этим вы ему явно ни чем не помогли......