1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
| Rocket |
10.05.2009 13:59
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Переделал рекурсивную реализацию ПВГ, написанную на pascal'е, на c++. Тестирую реализацию на графе, приведенном на рисунке. Вместо ожидаемого вывода 1 3 2 6 7 5 4 8 9 (корректный обход, приведенный на втором рисунке), я получаю 1 3 4 2 5 6 7 8 9 . Где ошибка в алгоритме?
Эскизы прикрепленных изображений Прикрепленные файлы
dst.cpp ( 1.55 килобайт )
Кол-во скачиваний: 175 |
![]() ![]() |
| volvo |
10.05.2009 14:52
Сообщение
#2
|
|
Гость |
Цитата Где ошибка в алгоритме? Ошибка - не в алгоритме, а в реализации... И тебе, кстати, на эту ошибку указывает компилятор, внимательно смотри на все Warning-и, и увидишь, в чем дело. |
| Rocket |
10.05.2009 15:10
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
|
| volvo |
10.05.2009 15:17
Сообщение
#4
|
|
Гость |
Вот это:
Эскизы прикрепленных изображений |
| Rocket |
10.05.2009 15:27
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Мой изначальный вариант был :
В a[v,i] почему-то оказывался адрес, а не значение из матрицы - решил использовать *(...). И о чём этот Warning? Как исправить? |
| volvo |
10.05.2009 15:55
Сообщение
#6
|
|
Гость |
Цитата Как исправить? Очень просто: вспомнить, что в С есть "операция-запятая", которую ты пытаешься здесь использовать, но оно тебе не надо. А надо тебе обращаться к элементам многомерных массивов, и это делается так:if (((a[v][i]) != 0) && (Nnew[i])) Pg(i);Видишь разницу между тем, что ты пытался сделать, и тем, что написано у меня? |
| Rocket |
10.05.2009 16:18
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Очень просто: вспомнить, что в С есть "операция-запятая", которую ты пытаешься здесь использовать, но оно тебе не надо. А надо тебе обращаться к элементам многомерных массивов, и это делается так: if (((a[v][i]) != 0) && (Nnew[i])) Pg(i);Видишь разницу между тем, что ты пытался сделать, и тем, что написано у меня? Спасибо, volvo! В который раз подводит меня невнимательность... Ещё вопрос. Мне по заданию нужно отрисовывать граф и дерево, у меня написана программа на Delphi, которая рисует граф по матрице смежности, которую я пишу в файл в основной программе на c++, где реализован основной алгоритм (ПВШ, а теперь и ПВГ). Вобщем, как в данном случае матрицу смежности получить? |
| Rocket |
10.05.2009 23:12
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
В принципе во всем разобрался сам и доработал программу. Вот окончательный вариант:
|
![]() ![]() |
|
Текстовая версия | 15.11.2025 12:59 |