Название: [РЕШЕНО] Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 17:53 Доброго времени суток всем.
Такая проблема. Написал я лабораторную работу на c++/qt по графам. Окно редактора графа и кнопки алгоритмов. Что-то вроде нарисовал граф, нажал кнопку, визуализировался обход в ширину по графу. Все бы отлично, но если собрать эту программу на другом компьютере, то программа работает неверно. Что имеется в виду: при одних и тех же тестовых условиях у меня на компьютере все работает корректно, на другом компьютере некорректно. Я предполагаю, что может быть проблема в том, что разные библиотеки Qt на компах стоят (у меня sdk еще нокиевское, а на другом компе уже скачано с сайта digia). Архив с программой прикрепляю. Тестовый граф тоже (результат обхода в ширину + в глубину). Может кто протестирует и сверится с эталонным результатом? Очень нужно выяснить в чем проблема. У меня стоит Qt4.7.4. Может быть кто-то просто соберет у себя и скажет какой результат обходов? Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: gil9red от Декабрь 19, 2012, 18:06 У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :)
Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: Bepec от Декабрь 19, 2012, 18:13 А у меня VS2008, который придерживается стандарта :) В результате проект не собирается :D
Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: Dancing_on_water от Декабрь 19, 2012, 18:13 Я, конечно, дико извиняюсь. Но с какого перепугу обход в ширину 0 1 2 3 4
хотя между вершинами 1 и 2 нет ребра? ( у меня результат такойже) Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:13 У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) Ок, спасибо. а какой QtSDK у тебя? еще от nokia или уже от digitea? Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:15 Я, конечно, дико извиняюсь. Но с какого перепугу обход в ширину 0 1 2 3 4 хотя между вершинами 1 и 2 нет ребра? ( умея результат такойже) хм. там в архиве есть сохраненные .html страницы с графами. проверял на них, все сходится. Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: kambala от Декабрь 19, 2012, 18:16 Windows 7, Qt 4.8.4, msvc2012 x86 (компилировал сам): ширина совпала, глубина 0 2 1 4 3.
динамическому массиву память надо выделять руками, а не писать int array[n], т.к. не все компиляторы это съедают. ну и стандартное замечание по поводу кодировки файлов cp1251 вместо utf-8 и неудаления файлов *.user перед выкладыванием в паблик. Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:16 У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) и еще, при обходе в ширину при визуализации не пропускаются никакие вершины? Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:17 Qt 4.8.4, msvc2012 x86 (компилировал сам): ширина совпала, глубина 0 2 1 4 3. динамическому массиву память надо выделять руками, а не писать int array[n], т.к. не все компиляторы это съедают. ну и стандартное замечание по поводу кодировки файлов cp1251 вместо utf-8 и неудаления файлов *.user перед выкладыванием в паблик. попробую заменить массив на QVector. на другом компьютере *.user удалял - все равно неверно работает. Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: kambala от Декабрь 19, 2012, 18:20 Qt 4.8.4, msvc2012 x86 (компилировал сам): ширина совпала, глубина 0 2 1 4 3. динамическому массиву память надо выделять руками, а не писать int array[n], т.к. не все компиляторы это съедают. ну и стандартное замечание по поводу кодировки файлов cp1251 вместо utf-8 и неудаления файлов *.user перед выкладыванием в паблик. на другом компьютере *.user удалял - все равно неверно работает. только что забыл о ребре между 2 и 4 — результаты идентичные. мне кажется, что программа работает неправильно. добавлено: определённо неправильно (ширина: 0 1 5 3 2 4, глубина: 0 5 3 4 2 1). и ещё обход в глубину не подсвечивается. Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: gil9red от Декабрь 19, 2012, 18:22 У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) Ок, спасибо. а какой QtSDK у тебя? еще от nokia или уже от digitea? У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) и еще, при обходе в ширину при визуализации не пропускаются никакие вершины? При поиске в ширину - нормально, как по результату показывает при поиск в глубину - вообще нет визуализации О_о Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:23 Qt 4.8.4, msvc2012 x86 (компилировал сам): ширина совпала, глубина 0 2 1 4 3. динамическому массиву память надо выделять руками, а не писать int array[n], т.к. не все компиляторы это съедают. ну и стандартное замечание по поводу кодировки файлов cp1251 вместо utf-8 и неудаления файлов *.user перед выкладыванием в паблик. на другом компьютере *.user удалял - все равно неверно работает. только что забыл о ребре между 2 и 4 — результаты идентичные. мне кажется, что программа работает неправильно. только что забыл о ребре между 2 и 4 — результаты идентичные. мне кажется, что программа работает неправильно. 0 не понял это. результаты идентичные как на скриншоте? (в данный момент правильность алгоритма не обсуждается. интересует именно то, что работать должна одинаково на всех компах) ДОБАВЛЕНО: алгоритм поиска в глубину не реализован пока что. интересует не правильность алгоритма на данный момент, а идентичность результата на всех компа с теми, что на скриншотах Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: kambala от Декабрь 19, 2012, 18:24 результаты идентичные моим первым (ширина как на скрине, глубина 0 2 1 4 3). также обновил предыдущий пост (http://www.prog.org.ru/index.php?topic=23834.msg168702#msg168702).
Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 19, 2012, 18:26 У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) Ок, спасибо. а какой QtSDK у тебя? еще от nokia или уже от digitea? У меня винда хр, Qt 4.8.0, результат такой же как по скриншотам :) и еще, при обходе в ширину при визуализации не пропускаются никакие вершины? При поиске в ширину - нормально, как по результату показывает при поиск в глубину - вообще нет визуализации О_о визуализация поиска в глубину не реализована Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: Dancing_on_water от Декабрь 19, 2012, 18:27 Цитировать хм. там в архиве есть сохраненные .html страницы с графами. проверял на них, все сходится. Да, попутал. С шириной так и должно быть.Проблема с глубиной. Цитировать (в данный момент правильность алгоритма не обсуждается. интересует именно то, что работать должна одинаково на всех компах) Крайне неверный подход, сначала надо добиться ожидаемого результата, а потом пинять на qt\компиляторНазвание: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 20, 2012, 18:57 Цитировать хм. там в архиве есть сохраненные .html страницы с графами. проверял на них, все сходится. Да, попутал. С шириной так и должно быть.Проблема с глубиной. Цитировать (в данный момент правильность алгоритма не обсуждается. интересует именно то, что работать должна одинаково на всех компах) Крайне неверный подход, сначала надо добиться ожидаемого результата, а потом пинять на qt\компилятордело в том, что при одних и тех же входных тестовых данных на разных компах был разный результат. и в данном случае неважно правильно работает алгоритм, или нет. если тебе так угодно, то в ширину работает правильно, но результат на разных компах был разным. не надо меня учить какому подходу следовать. я задавал вопрос не по алгоритмам. Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: Dancing_on_water от Декабрь 20, 2012, 20:14 Цитировать дело в том, что при одних и тех же входных тестовых данных на разных компах был разный результат. и в данном случае неважно правильно работает алгоритм, или нет. если тебе так угодно, то в ширину работает правильно, но результат на разных компах был разным. не надо меня учить какому подходу следовать. я задавал вопрос не по алгоритмам. Отвечаю. Если где-то есть лажа с указателями, то проблема может проявляться на одной системе, но не проявляться на другой. Более того, на одной и тойже системе, но при разных условиях проблема может как проявляться, так и не проявляться. Подобные баги проще всего ловить, когда удалось добиться ожидаемого поведения.Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 20, 2012, 22:22 Цитировать дело в том, что при одних и тех же входных тестовых данных на разных компах был разный результат. и в данном случае неважно правильно работает алгоритм, или нет. если тебе так угодно, то в ширину работает правильно, но результат на разных компах был разным. не надо меня учить какому подходу следовать. я задавал вопрос не по алгоритмам. Отвечаю. Если где-то есть лажа с указателями, то проблема может проявляться на одной системе, но не проявляться на другой. Более того, на одной и тойже системе, но при разных условиях проблема может как проявляться, так и не проявляться. Подобные баги проще всего ловить, когда удалось добиться ожидаемого поведения.очень содержательный ответ. я как раз и спрашиваю о таких "разных условиях, при которой проблема может проявиться, а может и нет" Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: kambala от Декабрь 20, 2012, 22:38 написано же — проблема с указателями в коде скорее всего
Название: Re: Неправильно работает программа, собранная на другом компе Отправлено: FluffyMan2000 от Декабрь 20, 2012, 22:43 Windows 7, Qt 4.8.4, msvc2012 x86 (компилировал сам): ширина совпала, глубина 0 2 1 4 3. динамическому массиву память надо выделять руками, а не писать int array[n], т.к. не все компиляторы это съедают. ну и стандартное замечание по поводу кодировки файлов cp1251 вместо utf-8 и неудаления файлов *.user перед выкладыванием в паблик. вместо int array[n] сделал QVector<int> array; array.resize(n); - проблема кажется решена. вот уж не знал, что такой банальный участо кода может вызвать неопределенное поведение такое на разных компьютерах с ОДИНАКОВЫМ компилятором. спасибо |