0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
||||||||||||
1 | ||||||||||||
Граф на C16.09.2011, 11:13. Показов 5967. Ответов 19
Метки нет (Все метки)
Всем доброго времени суток. В общем присутплю сразу к проблеме. Задали курсовую:даётся сеть двусторонних автомобильных дорог, вывести маршрут из города А в город Б, А и Б естественно задаёт пользователь, сам граф, то есть матрица берётся из файла.
Пишу на Visual Studio, программа выдаёт ошибку при построении, вот собстенно сам код:
0
|
16.09.2011, 11:13 | |
Ответы с готовыми решениями:
19
Граф задан цепными списками. Построить его реберный граф Как преобразовать неориентированный граф в ориентированный граф из матричной записи Ориентированный граф задан матрицей смежности. Нарисовать граф с наименьшим количеством пересечений Реализовать граф от 1 до 10: граф связный; -число от 1 до 10, могут повторяться |
194 / 193 / 15
Регистрация: 12.12.2010
Сообщений: 270
|
|
16.09.2011, 11:26 | 2 |
а ошибку какую выдает и в каком месте кода?
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
||||||
16.09.2011, 12:27 [ТС] | 3 | |||||
Сейчас построение успешно проходит, но завершается прога с кодом 1, т.е. не может найти matr.txt для открытия, но он лежит в папке самого проекта, может в Visual Studio 2010 он в другом месте должен лежать???
Добавлено через 14 минут Сейчас код выглядит так:
0
|
194 / 193 / 15
Регистрация: 12.12.2010
Сообщений: 270
|
|
16.09.2011, 12:33 | 4 |
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
|
16.09.2011, 12:40 [ТС] | 5 |
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
16.09.2011, 13:18 | 6 |
K16FORWARD, положи его в папку, из которой запускается исполняемый файл. Ну или задай абсолютный путь
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||||||||||
16.09.2011, 13:20 | 7 | ||||||||||
надо либо так:
1
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
|||||||||||
16.09.2011, 14:50 [ТС] | 8 | ||||||||||
Спасибо, теперь файл открывает, но ругается на функцию Readmatr, из-за того что я её криво написал в виду неумения, можно ли после открытия файла использовать функцию scanf чтобы из файла в массив данные перешли?
Добавлено через 19 минут Переписал строку
Добавлено через 15 минут Ошибка: Необработанное исключение в "0x691c936c (msvcr90d.dll)" в "p2e1.exe": 0xC0000005: Нарушение прав доступа при записи "0x80000000".
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
16.09.2011, 19:07 | 9 | |||||
ну, по крайней мере одна очевидная ошибка:
Подробнее см. man 3 scanf (или другую доступную документацию). Ну или гуглить по теме "Указатели" и для чего они на самом деле нужны в языках С/С++.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
16.09.2011, 19:24 | 10 |
Кстати, в цикле (строки 18-22) у тебя scanf (fscanf) читает (или должен читать) данные из файла для каждой итерации в один и тот же элемент двумерного массива (matr). Мне лично это кажется очень подозрительным.
Какой у тебя формат файла? Что там задано? Матрица смежности?
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
|
16.09.2011, 22:10 [ТС] | 11 |
Да, у меня в файле матрица смежности
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||||||||||
17.09.2011, 02:59 | 12 | ||||||||||
1
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
|
18.09.2011, 08:49 [ТС] | 14 |
Цикл поменял, прототип изменил, чёто сразу не подумал цикл в цикле использовать) матрица правильно считывается(трассировкой проверил). Теперь проблема с нахождением пути, не подскажете где можно найти готовые алгоритмы нахождения всех путей в неориентированном графе из точки А в точку Б?
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
||||||
22.09.2011, 13:51 [ТС] | 15 | |||||
У меня сейчас получился вот такой код программы и немного исправленная функция поиска путей, компилируется без ошибок, но работает неправильно, укажите плз на ошибки)
0
|
Заблокирован
|
|||||||||||||||||||||
22.09.2011, 18:14 | 16 | ||||||||||||||||||||
ты бы указал что не так работает. ну вот пример кода, который не компилируется
ошибка в строке 8. так инициализировать массив нельзя
результат
Код
$ ./system 12960916 750006397 129100401 5904336 6364454 -163754450 -1215842828 6 12974360 0 0 1 2206 -1215842768 -1215843648 134513295 5906416 134513132 1 12972020 -1075251872 12974800 -1075251920 12892537 -1075251936 134513132 -1075251948 12974708 0 -1215842768 1 0 1 12974360 29 -1075252052 результат работы кода
результат
Код
$ ./system 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Добавлено через 1 час 19 минут Я кстати вообще поражаюсь как компилятор мог скомпилировать такое. Даже боюсь представить чем это может быть чревато.
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
|
22.09.2011, 19:55 [ТС] | 17 |
Так спокойно все инициализируется, я явно присваиваю первому элементу 0, остальные обнуляются неявно.
А почему вы считаете что я инициализировал ЧУЖУЮ область? просто я пользуюсь обнулением как в цикле так и способом {0}, в обоих случаях обнуление проходит, делал трассировку на Visual Studio 2010
0
|
Заблокирован
|
||||||||||||||||
22.09.2011, 20:30 | 18 | |||||||||||||||
потому что массиву принадлежат элементы с 0 по (TownMax - 1) включительно. элемента массива
matr[TownMax][TownMax] не существует, это уже выход за пределы массива... что-то там обсуждалось на эту тему на очень низком уровне с функцией Crush() для Си. Попробуйте код и убедитесь.
Добавлено через 16 минут код
variable-sized object may not be initialize все ясно на этапе компиляции.
0
|
0 / 0 / 1
Регистрация: 16.09.2011
Сообщений: 24
|
||||||
23.09.2011, 12:15 [ТС] | 19 | |||||
Да, вы правы, сейчас тоже не понимаю как компилятор это пропустил, как и то что я присвоил
0
|
Заблокирован
|
|
23.09.2011, 15:38 | 20 |
Т.Ч. Ху, М.Т.Шинг "Комбинаторные алгоритмы", Кнута надо посмотреть, у него 100% должны быть подобные решения.
З.Ы. при скачивании обращайте внимание на размер. Первая книга часто идет как просто оглавление и список литературы.
0
|
23.09.2011, 15:38 | |
23.09.2011, 15:38 | |
Помогаю со студенческими работами здесь
20
Дан список, содержащий смешанный граф. Выбрать из него однонаправленные ветви и занести в результирующий граф Считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл Граф в С Граф Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |