program Project_SPD; uses crt; const MAX_SIZE = 7; type Matrix = record Len:array[1..MAX_SIZE, 1..MAX_SIZE] of integer; Lab:array[1..MAX_SIZE] of integer; Path:array[1..MAX_SIZE, 1..MAX_SIZE] of string; Vis:array[1..MAX_SIZE, 1..MAX_SIZE] of boolean; end; var MatrixSize,i,j,_i,s:integer; sym:string; MM:Matrix; outfile: text; BEGIN clrscr; MatrixSize:=6; {создание файла DATAFILE.CSV} Assign(outfile, 'C:\DATAFILE.CSV'); rewrite(outfile); write(outfile,'node;'); for i:=1 to MatrixSize do write(outfile,'P',i,';'); for i:=1 to MatrixSize do write(outfile,'L',i,';'); writeln(outfile); writeln('START store data to file c:\datafile.doc '); writeln; write('Size=',MatrixSize); writeln; {зануление всех элементов массивов MM.Len, MM.Path} for i:=1 to MatrixSize do begin for j:=1 to MatrixSize do begin MM.Len[i,j]:=999; MM.Path[i,j]:=''; if i=j then begin MM.Len[i,j]:=0; str(i,MM.Path[i,j]); end; end; end; readln; {ввод стоимости звеньев} MM.Len[1,2]:=7; MM.Len[1,3]:=9; MM.Len[1,6]:=14; MM.Len[2,3]:=10; MM.Len[2,4]:=15; MM.Len[3,4]:=11; MM.Len[3,6]:=2; MM.Len[4,5]:=6; MM.Len[5,6]:=9; {симметрирование массива стоимости звеньев MM.Len и задание начала возможных маршрутов MM.Path} for i:=1 to MatrixSize do begin for j:=1 to MatrixSize do if ((MM.Len[i,j]<>999) and (MM.Len[i,j]<>0)) then begin MM.Len[j,i]:=MM.Len[i,j]; str(i,MM.Path[i,j]); end; end; {вывод на экран стоимости звеньев для проверки} for i:=1 to MatrixSize do begin for j:=1 to MatrixSize do begin write('D[',i,',',j,']=',MM.Len[i,j],' '); end; writeln; end; readln; {начало алгоритма Дейкстры для всех узлов} for s:=1 to MatrixSize do begin write(outfile,s,';'); for i:=1 to MatrixSize do begin for j:=1 to MatrixSize do MM.Vis[i,j]:=false; MM.Lab[i]:=999; end; { s:=1;} MM.Lab[s]:=0; {поиск по возростанию} for i:=s to MatrixSize do begin for j:=1 to MatrixSize do begin if MM.Vis[i,j]=false then if ((MM.Len[i,j]<>999) and (MM.Len[i,j]<>0)) then begin if MM.Len[i,j]+MM.Lab[i]999) and (MM.Len[i,j]<>0)) then begin if MM.Len[i,j]+MM.Lab[i]