Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 3 / 3
Регистрация: 17.09.2011
Сообщений: 73

Графическое построение графов

02.10.2015, 03:43. Показов 1734. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасть)
Есть матрица смежности, и по ней строю граф. Написал программу (с божьей помощью).
В StringGride указываю начало и конец отрезка (из вершины к вершине), а в мемо вывожу путь из одной вершины к другим. Но вот как его представить графически понятии не имею

Исходник:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
type
 Pt=^Zt;
 Zt=record
  Uzl:integer;
  Next:Pt;
 end;
 
var m,n:integer;
    start: array of Pt;
    k:integer;
    Sg:TStringGrid;
 
Procedure Puch(var P:Pt; u: integer); //добавление ребер
var p1:pt;
begin
 new (p1);
 p1^.Uzl:=u;
 p1^.Next:=p;
 p:=P1;
end;
 
function Pop(Var p:Pt): integer; // Проц. удаление вершин из стека
var p1:pt;
begin
  Pop:=p^.Uzl;
  p1:=p;
  p:=p^.Next;
  dispose(p1);
end;
 
function Poptail(var p:Pt): integer; //процедура выталкивание из очереди
begin
  if p^.Next=nil then poptail:=Pop(p)
  else Poptail:=Poptail(p^.Next);
end;
 
Procedure Spiski(); //заполнение
var
r,u,v:integer;
begin
  SetLength(start,n+1);
 for r := 0 to m- 1 do
  start[r]:=nil;
 for r := 0 to m- 1 do
   begin
    u:=strtoint(Sg.Cells[0,r+1]);
    v:= StrToInt(Sg.Cells[1,r+1]);
    Puch(start[u],v);
    Puch(start[v],u);
   end;
end;
 
Procedure SpiskiOut(var Mq:Tmemo); //вывод пути
var P:Pt;
    i:integer;
begin
  for i := 1 to m -1 do
    begin
      p:=start[i];
      Mq.Text:=Mq.Text+inttostr(i)+'-> ';
      while P<> nil do
      begin
        Mq.Text:=Mq.Text+inttostr(p^.Uzl)+'  ';
        P:=p^.Next;
      end;
      Mq.Text:=Mq.Text+#13#10;
    end;
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
var u,v,i,j:integer;
begin
 Spiski();
 SpiskiOut(memo1);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 Sg:=StringGrid1;
 Sg.RowCount:=strtoint(Edit1.Text)+1;
 n:= strtoint(Edit2.Text);
 m:=strtoint(Edit1.Text);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
Image1.Picture:=nil;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Sg:=StringGrid1;
  Sg.ColCount:=2;
  Sg.FixedCols:=0;
  Sg.FixedRows:=1;
  Sg.RowCount:=2;
  Sg.Cells[0,0]:='Nachalo';
  Sg.Cells[1,0]:='Konec';
end;
 
end.


Буду благодарен если укажите направление куда копать, а то я сам толком нечего такого не нарыл, а если есть исходник то будет весьма полезно))

P.S.: Я так по раскинул мозгами, думал завести массив, куда будет указана вершина и его координаты (думаю рандомна задать), и нарисовать его Image, ну как то не получается.
Миниатюры
Графическое построение графов  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2015, 03:43
Ответы с готовыми решениями:

Графическое построение графа
Нужно сделать программу для работы с графами в которую граф можно будет заносить графически. Я себе это практически не представляю. Да, в...

Построение графов
задание, нужно написать код построение графа логической взаимосвязи дисциплин по входящим компетенциям универстита

Построение графов
Кто-нибудь строил графы на основе таблицы? Например в таблице содержатся значения: 1)кто продал 2) кому продал. Необходимо построить...

4
3 / 3 / 3
Регистрация: 17.09.2011
Сообщений: 73
02.10.2015, 03:48  [ТС]
Хотелось бы, что то вроде такого получилось(хоть и с рандомна)
Миниатюры
Графическое построение графов  
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,664
Записей в блоге: 21
02.10.2015, 06:30
Правильно выстроить дерево по исходным данным
образец
1
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.10.2015, 06:44
...отрисовывать прямо на канвасе. Для особых извращенцев в 3D в OpenGL.

Cкриншот из третьего выпуска журнала "ПРОграммист" (поиск пути, построение графа и поиск кратчайшего пути):
1
3 / 3 / 3
Регистрация: 17.09.2011
Сообщений: 73
02.10.2015, 20:10  [ТС]
krapotkin, raxp, благодарствую за наводку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2015, 20:10
Помогаю со студенческими работами здесь

Построение графов и OpenGL в C++
Всем доброго времени суток. Нужно реализовать программу, которая предоставляет возможность визуального построения графов. Как должно...

Графическое построение блок схемы в Buildere
ЗДраствуите . не могу построить программу чтоб графическим способом в Buildere составляля блок схему из всех фигур...

Построение всех возможных двудольных графов
дано количество вершин в каждой доле. построить все возможные двудольные графы

Перевести код с С++ на C# (построение графов, проблема с указателями)
Нужно написать код аналогичный этому, но на C# # include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;string&gt; class Vertex { ...

Необходимо создать программу, которая позволяет осуществить графическое построение генеалогического древа
Необходимо создать программу, которая позволяет осуществить графическое построение генеалогического древа. В качестве исходной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru