0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 4

Определить является ли граф связным

20.05.2012, 19:51. Показов 3582. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно определить является ли граф связным. Но при работе программы появляется ошибка при нажатии на кнопку, которая определяет связный граф или нет.

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
106
unit MainUnit;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls,GraphUnit;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    GraphButton: TButton;
    ButtonCheck: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure GraphButtonClick(Sender: TObject);
    procedure ButtonCheckClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var S:char;
i:Integer;
begin
StringGrid1.ColCount:=StrToInt(Edit1.Text);
StringGrid1.RowCount:=StrToInt(Edit1.Text);
S:='A';
 for i:=1 to StringGrid1.colcount do
 begin
 StringGrid1.cells[I,0]:=S;  
 StringGrid1.cells[0,I]:=S; 
 inc(S);
 end;
 end;
 
 
 
procedure TForm1.GraphButtonClick(Sender: TObject);
var i,j:integer;
    C:Matr;
begin
SetLength(C,StringGrid1.ColCount,StringGrid1.ColCount);
For i:=1 to StringGrid1.ColCount-1 do
For j:=1 to StringGrid1.ColCount-1 do
C[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
end;
 
procedure TForm1.ButtonCheckClick(Sender: TObject);
var b:Mas;
    i:integer;
begin
SetLength(b,StringGrid1.ColCount);
for i:=1 to High(b)-1 do
b[i]:=false;
if Check(1) then
Label1.Caption:='Граф связный'
else
Label1.Caption:='Граф не связный';
end;
 
end.
 
 
unit GraphUnit;
 
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
type
Mas=array of Boolean;
Matr=array of array of integer;
 
var
C:Matr;
B:Mas;
 
function Check(v:integer): boolean;
implementation
 
 
 
function Check(v:integer): boolean;
var i: Integer;
begin
  b[v]:=true;
  for i:=1 to high(C)-1 do
    if (c[v,i]=1) and (b[i]=false) then Check(i);
  for i:=1 to high(b)-1 do
    if b[i]=false then Result:=false else
    Result:=true;
end;
 
end.
P.S. Во вложении есть полный проект.
Вложения
Тип файла: rar программа.rar (190.7 Кб, 54 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2012, 19:51
Ответы с готовыми решениями:

Определить, является ли связным заданный граф
Определить, является ли связным заданный граф

Определить, является ли заданный граф связным
Пожалуйста, помогите, очень-очень нужна ваша помощь в задании: "определить является ли заданный граф связным".

Является ли граф связным
В задаче нужно определить является ли неориентированный граф связным. Нужно использовать стек. Только начал изучать Java, а задача сложная...

10
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
21.05.2012, 06:59
У тебя событие GraphButtonClick почему-то не привязано к кнопке. Поэтому в массив С ничего не заносится - он пустой и размерность не определена.
Кроме того в функции Check следующий код:
Delphi
1
2
3
  for i:=1 to high(b)-1 do
    if b[i]=false then Result:=false else
    Result:=true;
даёт результат только по последнему элементу массива b. Думаю, это не правильно, потому что зачем городить цикл, если можно сразу проверить последний элемент.
Это грубые ошибки, которые сразу бросаются в глаза. Может есть ещё, но это уже нужно разбираться с методом.
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 4
22.05.2012, 17:49  [ТС]
Я задавал матрицу смежности вручную, через ячейки СтрингГрида, а в процедуре GraphButtonClick я переводил значения из СтрингГрида в массив. А по поводу функции Check я даже не знаю как по-другому переделать. Я за основу брал алгоритм поиска в глубину.
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 17:54
Так вот щелчок на кнопке GraphButton (Перевести граф) не отрабатывается. Событие Click не установлено - проверь.
А насчёт функции Check, прочитал я комментарий внизу. Пиши этот цикл там так:
Delphi
1
2
3
4
5
6
7
  Result:=true;
  for i:=1 to high(b)-1 do
  if Not b[i] then 
  Begin
     Result:=false;
     Break;
  End;

Не по теме:

И, если не в курсе, обновляй, периодически, страницу, если не перемещаещься по форуму. А то не увидишь, когда выложат ответ.

0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
22.05.2012, 18:30
У тебя все работает. Есть огрешности(например масивы ненадо объявлять локально, границы массива неправильно установлены, и т. д. и т. п.) А так код рабочий
программа_FIX.rar
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 18:46
antikiler_: Ты хоть предыдущие посты почитай. Нифига в том варианте оно правильно работать не будет. Хоть ты и прицепил событие Click на кнопку, но этого не достаточно.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
22.05.2012, 18:55
Цитата Сообщение от Одиночка Посмотреть сообщение
Ты хоть предыдущие посты почитай. Хоть ты и прицепил событие Click на кнопку, но этого не достаточно.
Скачал. Запустил. Все кнопки отрабатывалиь...(никакие события не устанвливал)Одна кнопка с ошибкой при запуске.
Нифига в том варианте оно правильно работать не будет.
Но работает...
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 19:13
antikiler_: Может у тебя Delphi автоматом привязала. Какая Delphi? Но у него была ошибка при нажатии на кнопку. И именно из-за того, что я писал. Я не хочу глубоко влазить в эти графы, но посмотрев функцию Check сразу увидел некорректность. Потом нашел ниже (под самой функцией) описание и немного переделал. Теперь может будет работать правильно, если остальная логика правильная.
А в том варианте, как было - результат будет иногда правильным, иногде - нет.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
22.05.2012, 20:08
Цитата Сообщение от Одиночка Посмотреть сообщение
Какая Delphi?
2010
Цитата Сообщение от Одиночка Посмотреть сообщение
Я не хочу глубоко влазить в эти графы,
Сам нехотел. Но пришлось...
А в том варианте, как было - результат будет иногда правильным, иногде - нет.
Я проверил на трех результатах. Вродебы правильно. Но тестировать надо...
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 4
24.05.2012, 21:31  [ТС]
Спасибо за помощь. Одиночка, тебе особенно.
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 1
22.02.2019, 10:54
кто нибудь может скинуть рабочую лабу?)пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2019, 10:54
Помогаю со студенческими работами здесь

Проверить , является ли граф связным
Доброго времени суток. В очередной раз без Вашей помощи не обойтись!!!!!! ЗАДАНИЕ: Дан неориентированный граф, содержащий n вершин....

Проверить, является ли заданный граф связным
Помогите, пожалуйста, исправить ошибку!!! edge(a, c). edge(a, b). edge(c, d). edge(b, d). edge(e, d). ...

Наибольшее число связей, удаление которых оставляет граф связным
Здравствуйте! Хотел попросить помощи с заданием: Задается ограф без петель, из него нужно получить максимальное количество дуг, удаление...

Определить является ли граф гамильтоновым
Определить является ли граф гамильтоновым. Найти гамильтоновцикл, т.е. цикл, переходящий через все вершины графа. Помогите, плиз

Определить, является ли граф деревом
Дан неориентированный граф, список инцидентности. Любым способом нужно определить, является ли он деревом. Помогите, пожалуйста:))


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru