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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2014, 21:15   #1
Absober
Новичок
Джуниор
 
Регистрация: 30.12.2013
Сообщений: 1
Сообщение Медиана графа (Delphi)

Задача: найти медиану графа, т.е такую его вершину. что сумма расстояний от нее до остальных вершин минимальна

Код:
var
  Form1: TForm1;
  r_g,i,j,k,s:Integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.button1Click(Sender: TObject);
begin
if (length(Edit1.Text)>0)then
begin
  r_g:=StrToInt(Edit1.Text);
  StringGrid1.ColCount:= r_g;
  StringGrid1.RowCount:= r_g;
  StringGrid2.ColCount:= r_g;
  StringGrid2.RowCount:= r_g;
end
else
Application.MessageBox('Необходимо ввести число','Ошибка', MB_OK+MB_ICONSTOP);
end;
 
//задать граф
procedure TForm1.Button3Click(Sender: TObject);
begin
 for i:=0 to r_g-1 do
  for j:=0 to r_g-1 do
      begin
       if i=j then StringGrid1.Cells[i,j]:=IntToStr(0);  {между одной и той же вершиной}
       if i=j then StringGrid2.Cells[i,j]:=IntToStr(0)  {не может быть ребёр}
       else
       randomize;
       if i<>j then StringGrid1.Cells[i,j]:=IntToStr(random(2));
      end;
end;
 
//задать матрицу кратч. расстояний
procedure TForm1.Button2Click(Sender: TObject);
begin
 for i := 0 to StringGrid1.ColCount-1 do
       for j := 0 to StringGrid1.RowCount-1 do
         if StringGrid1.Cells[i, j] = ('0') then
            StringGrid2.Cells[i, j] := IntToStr(999)
         else
         if StringGrid1.Cells[i, j] = ('1') then
            StringGrid2.Cells[i, j] := 'inf';
end;
 
 
//Медиана по алг Флойда
procedure TForm1.Button9Click(Sender: TObject);
begin
     k := 1;
     while k < StringGrid2.ColCount-1 do
       begin
         for i := 1 to StringGrid2.ColCount-1 do
           for j := 1 to StringGrid2.RowCount-1 do
             begin
               if (i <> k) and (j <> k) and (i <> j) then
               if StrToInt(StringGrid2.Cells[i, j]) > StrToInt(StringGrid2.Cells[i, k]) + StrToInt(StringGrid2.Cells[k, j]) then
                   begin
                     StringGrid2.Cells[i, j] := IntToStr(StrToInt(StringGrid2.Cells[i, k]) + StrToInt(StringGrid2.Cells[k, j]));
                   end;
             end;
         k := k + 1;
       end;
end;
 
end.
Училка сказала, что прога должна нормально работать, нужно только устранить ошибки. Я их не увидел, помогите разобраться!



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.01.2014 в 22:54.
Absober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание графа по матрице и поиск кратчайшего пути из одного графа в другой lexflax Общие вопросы C/C++ 1 06.09.2012 07:32
Медиана tema654 Microsoft Office Excel 5 16.12.2011 10:49
по заданной матрице смежности простого графа построить каркас этого графа с использованием поиска вширь d1m2o3n4 Помощь студентам 0 22.06.2011 22:43
МЕДИАНА и 75 квартиль по определенным значениям Екатрина Microsoft Office Excel 5 25.12.2009 12:08
Медиана - SQL Serval Помощь студентам 5 28.01.2009 09:30