| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Почему неправильно работает qsort() |
| Автор: AntZ 11.9.2007, 11:25 | ||
Вот код моей проги:
Все бы ничего, но например на этих наборах данных она сортирует... НЕПРАВИЛЬНО!!! У меня уже голова трещит - не пойму..... Вот эти входные данные 10 1 2 4 8 16 32 64 128 256 512 На выводе печатает: 32 2 4 8 16 1 64 128 256 512 Проверял дебагером, в нем было видно что после qsort(mas, n, sizeof(long), mycmp) порядок становится именно такой. Но что интересно, порядок устанавливается такой изначально, еще до первого изпользования функции mycmp(). Почему сортировка работает неправильно? Прошу помочь всех кто может. И если причина тривиальна, то плизз не пинайте меня слишком больно... |
| Автор: apook 11.9.2007, 11:48 | ||
|
| Автор: archimed7592 11.9.2007, 12:22 | ||
Аналогичный результат можно получить намного более простым выражением:
|
| Автор: apook 11.9.2007, 12:33 | ||||
Вот какая задачка в книжке А. Крупника "ИЗУЧАЕМ Cи"
|
| Автор: DjoNIK 11.9.2007, 12:58 | ||
А нет такой же по плюсяам? Добавлено через 1 минуту и 6 секунд archimed7592, поздравляю 777 сообщения |
| Автор: AntZ 11.9.2007, 16:33 | ||||||
| блин! бывает вот так заклинит, а ведь сортировке надо было знать что число может быть не только меньше или больше, но и равно ли одно число другому.
Может эта функция опасна, если сравниваются числа, при которых может произойти переполнение в этом типе данных... Например, (-30000 - 30000) - при сравнении чисел -30000 и 30000, при размере типа int в 2 байта. |