Russian Qt Forum

Qt => Общие вопросы => Тема начата: FluffyMan2000 от Декабрь 19, 2012, 17:53



Название: [РЕШЕНО] Неправильно работает программа, собранная на другом компе
Отправлено: 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 удалял - все равно неверно работает.
наличие этих файлов на работу программы никак не влияет, просто они там сто лет не нужны, т.к. у каждого пользователя *.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?
nokia

У меня винда хр, 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 удалял - все равно неверно работает.
наличие этих файлов на работу программы никак не влияет, просто они там сто лет не нужны, т.к. у каждого пользователя *.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?
nokia

У меня винда хр, 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); - проблема кажется решена. вот уж не знал, что такой банальный участо кода может вызвать неопределенное поведение такое на разных компьютерах с ОДИНАКОВЫМ компилятором. спасибо