Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2015, 20:13   #1
nastyat1996
 
Аватар для nastyat1996
 
Регистрация: 03.10.2015
Сообщений: 4
По умолчанию Таблицы маршрутизации

Помогите, пожалуйста, разобраться, нужно написать код, чтобы ответ был как в MTABLE.EXE, а у меня получается только то, что выведено в data.exe(то есть не правильный второй столбец), как можно исправить?
Код:
uses crt;
const MaxN = 5;
INF = 1000; 
type Matrix = array[1..MaxN,1..MaxN] of longint;
const byk:array[1..MaxN] of char=('A','B','C','D','E');
var
a : Matrix; n: integer;
f: text;

{ввод данных из файла в переменные и вывод матрицы на экран}
procedure Input_Table(var A : Matrix; N : longint; var T : Text); 
var i, j : longint;
begin
 writeln('Matritsa svjazei:');
 while not eof(f) do
  begin
    for i := 1 to N do
    begin
        for j := 1 to N do
        begin
         read(f,a[i,j]);
          write(' ',a[i,j]);
            if (a[i,j] = 0) and (i <> j) then
             a[i,j] := INF;
        end;
        writeln;
        readln(T);
    end;
 end;
end;

{алгоритм Флойда-Уоршелла}
Procedure FU(D: matrix; V: integer);
var i,j,k: integer;
begin
for i:=1 to V do 
 D[i, i]:=0;
for k:=1 to V do 
for i:=1 to V do
for j:=1 to V do 
 if (D[i, k]<>0) and (D[k, j]<>0) and (i<>j) then
  if (D[i, k]+D[k, j]<D[i, j]) or (D[i, j]=0) then
  D[i, j]:=D[i, k]+D[k, j]; 

for i:=1 to V do
begin
for j:=1 to V do
  write(byk[i]:2,byk[j]:2,D[i, j]:3,'|   ');
  writeln; 
   
end;
end;

{основная программа}
BEGIN
clrscr;
writeln;
    assign(f,'data.txt');
    reset(f);
    readln(f,n);
writeln('Kolichestvo yzlov - ',n);
writeln;
    Input_Table(a,n,f);
    close(f);
writeln;
writeln('Rezyltat:');
FU(a, n);
 readln;
END.
Изображения
Тип файла: jpg рез л5.jpg (113.0 Кб, 122 просмотров)
Вложения
Тип файла: txt data.txt (56 байт, 117 просмотров)

Последний раз редактировалось Stilet; 28.12.2015 в 20:45.
nastyat1996 вне форума Ответить с цитированием
Старый 29.12.2015, 02:07   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Как исправить, не скажу - лень думать в 2 часа ночи
Во втором столбце выводится название предыдущего узла в кратчайшем пути.
Например, путь между A и C: A->D->B->C и длина 13. В таблице будет выведено A B 13.
UPD http://e-maxx.ru/algo/floyd_warshall_algorithm#3 - пишут что нужен массив предков.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 29.12.2015 в 02:11.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
matlab решение занимательной задачи маршрутизации (asap!!) aleksandr112 Помощь студентам 0 04.05.2015 21:50
MAC адрес в таблице маршрутизации в CISCO darmoed Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 3 26.03.2015 17:53
Алгоритм маршрутизации Damir1990 Фриланс 0 24.11.2013 15:53
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк yevgeniy.demidov Microsoft Office Excel 6 06.09.2012 15:27
роутер ASUS WL-520GC настройка режима маршрутизации -ushёl- Компьютерное железо 7 27.05.2011 15:58