Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal Таблицы маршрутизации 
:(
    Опции темы
nastyat1996
Дата 29.12.2015, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.12.2015

Репутация: нет
Всего: нет



Помогите, пожалуйста, разобраться, нужно написать код, чтобы ответ был как в MTABLE.EXE, а у меня получается только то, что выведено в data.exe(то есть не правильный второй столбец), понимаю, что нужно исправлять procedure FU, но не понимаю как, подскажите как можно исправить чтобы программа работала правильно?

Код

uses crt;
const MaxN = 5;
INF = 1000; 
type Matrix = array[1..MaxN,1..MaxN] of longint;

var
b:array[1..MaxN] of integer; byk:array[1..MaxN] of char; p,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
begin
  byk[i]:=chr(64+i);
  
  if i=j then b[i]:=0;
  
  write(byk[i]:2,b[i]:2,D[i, j]:3,'|   ');
end;
  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.


В файле data.txt записаны следующие данные:
5
0 9 0 5 0
9 0 5 3 2
0 5 0 0 4
5 3 0 0 7
0 2 4 7 0

Это сообщение отредактировал(а) Poseidon - 30.12.2015, 15:54

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  1.png 39,15 Kb
PM MAIL   Вверх
ElenHikari
Дата 30.12.2015, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.12.2015

Репутация: нет
Всего: нет



Как я понимаю там форматируется через пробел.
Т.е. 
Код

 write(byk[i],' ',b[i],' ',D[i, j],' |   ');

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.