![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
koshkarjov |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 1.3.2010 Репутация: нет Всего: нет |
Здравствуйте! Пишу программу, реализующую различные методы сортировок.
Застрял на методе быстрой сортировки, а именно при добавлении в процедуру подсчета числа сравнений и перестановок. Компилятор выводит вот такие ошибки:
Сам проект также прикладываю во вложениях. Заранее благодарен за помощь! Это сообщение отредактировал(а) koshkarjov - 16.9.2012, 15:41 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
||||
|
|||||
koshkarjov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 1.3.2010 Репутация: нет Всего: нет |
Сам думаю, что запутался в описании переменных Cmp (число сравнений) и Sw (число перестановок). Если их описать, как в предыдущем сообщении, то выходит ошибка. Хотя в других процедурах при таком же описании все работает. Если же описать их в var, вместе с обычными переменными, то они просто не учитываются:
|
|||
|
||||
Mirkes |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Ошибок несколько.
1. Подсчет сравнений и перестановок вообще не ведется! 2. QuickSort вызывается рекурсивно, а параметры ему не передаются. Точнее почему-то передаются не все параметры. Разбираемся исключительно с QuickSort Исходный текст.
Исправляем вторую ошибку
При рекурсивном вызове надо передавать все параметры! Теперь разберемся со сравнениями и перестановками. Сравнение - это любое сравнение элементов массива! Перестановка - любая перестановка элементов массива Правим текст:
Советую проверить и другие методы на предмет подсчета НУЖНЫХ величин. -------------------- Mirkes |
||||||
|
|||||||
koshkarjov |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 1.3.2010 Репутация: нет Всего: нет |
Mirkes, спасибо за помощь!
И еще вопрос: возникают ошибки при вызове функции:
Я так понимаю проблема опять в том, что я не все параметры передаю туда?
|
||||
|
|||||
Mirkes |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Вообще то это свинство. Как я длжен найти строки, если номеров нет? Хоть бы в искомых строках поставил признак "Ошибка здесь. Строка №180"
Ответы по порядку. в 180 строке выплняется ненужное действие. Эту строку можно удалить вместе с описанием переменной N строка 257 - правильно понимаете. В процедуре QuickSort вы определили набор параметров
Некорректное замечание: какого черта параметры left и right передаются по ссылке? Их нужно менять в процедуре и возвращать значения? Если нет - НИКОГДА не передавайте параметры по ссылке, если они не ДОЛЖНЫ меняться в процедуре, причем их изменение ДОЛЖНО быть видно снаружи! Но в данном случае это не привело к ошибке. Вызов вы осуществили в форме
Внимание вопрос: Как процедура сортировки должна догадаться откуда, докуда сортировать и печатать ли массив? правильная форма вызова очевидно такая:
И что самое печальное - delphi опять будет ругаться. Следует еще изменить описание метода:
или присвоить 0 и High(b) в специально созданные переменные. А все из-за неправильного описания. Я бы рекомендовал изменить описание. срока 297 - та же песня. Исправьте параметры Последняя ошибка следствие предыдущих. -------------------- Mirkes |
||||||||||
|
|||||||||||
koshkarjov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 1.3.2010 Репутация: нет Всего: нет |
Выкладываю готовую программу, вдруг кому нужно будет.
И сам проект также прикладываю во вложении ниже. Это сообщение отредактировал(а) koshkarjov - 19.9.2012, 00:49 Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |