![]() |
|
Модераторы: Poseidon |
![]()
|
|
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Привет всем хорошим программистам (ну, и плохим тоже)
Вот код. На форме текстовое поле и две кнопки. Они работают (т.е. их код работает). Но я никак не могу использовать процедуру Sort. Помогите пожалуйста - добавьте ее правильным образом туда, где написано {!!!!!}. И скажите - процедура вообще правильная? - она делает сортировку линейного списка? Надеюсь и жду!
Это сообщение отредактировал(а) I_Am_Rock - 22.5.2009, 21:51 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Ее в указанном месте получится использовать только в том случае, если ты объявишь и определишь ее перед функцией Button2Click. Иначе компилер ругаться будет. Насчет сортировки - алгоритм не глядел, но сразу могу сказать, что у тебя она выполняться не будет, т.к. ты сначала впихиваешь в Sorted значение False, а потом запускаешь цикл while sorted, он не выполнится ни разу, поскольку sorted уже ложно.
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Ааа. Вот оно че! А алгоритм Sort - таким я его нашел. Попытаюсь починить. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
I_Am_Rock, не стал вникать в описанный алг, если он так начинается, то явно нерабочий)))
Попробуй использовать один из известных алгоритмов, тот же пузырек хотя бы для простоты. Хотя я больше использую сортировку выбором, но в случае списка не пробовал реализовывать. Сейчас попробую, если что получится - отпишусь. Добавлено через 1 минуту и 42 секунды Кстати, насчет "тонкости" - функция либо должна быть объявлена до момента использования, либо быть членом класса, как Button1/2Click. Вообще, по-хорошему, второе предпочтительней. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Так и быть. Ваяю полный пример по работе с односвязным списком, включая сортировку, со всеми комментариями и объяснениями. Как закончу - выложу.
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
||||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Мда... сильно голова болит, очень мало сплю последнее время, и вставать рано... поэтому не успел написать до конца. То, что написано, кроме сортировки, проверено и работает. Сортировку не проверял. Осталось дописать обмен элементов местами, там надо похимичить с переадресацией ссылок, я сейчас уже плохо соображаю. Попробуй сам прописать функцию SwapList в коде, если сможешь - поздравляю, код должен работать, если нет - я попробую завтра найти время и дописать это.
То, что наработано на текущий момент, со всеми пояснениями.
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Спасибо!
Только, к сожалению, мне нужен не консольный проект, а оконный. ( Буду пытаться адаптировать твой код сортировки под тот проект - там же сортировка не работает, но добавление и удаление норм. А SwapList - ее задача просто менять местами pMin и pCur в процедуре Sort?
Правильно? Добавлено через 9 минут и 32 секунды О, я ошибся - не удаление, а отображение всего списка. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
I_Am_Rock, не, неправильно. Я сам еще путаюсь постоянно. Смотри.
Если есть список Эл1 -> Эл2 -> Эл3 -> Эл4 -> Эл5 и тебе надо поменять местами Эл2 и Эл4. Если ты просто поменяешь местами указатели, то это будет неверно, потому что ссылки на обменянные элементы окажутся неверными. По идее. Хотя попробуй. Я просто сейчас занят своей курсовой, поэтому нет толком времени дописать это. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Ща глянул на код - процедуру сортировки неверно написал. Скорее, так:
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Точно. Я забыл, что здесь не как в массиве - что тут действительно нужно менять указатели на меняемые элементы. Но думаю, это вполне решаемо - нужно по очереди пройтись по всем элементам и когда указатель на следующий элемент будет равен меняемому, то отметить его. И с другим так же. Буду пробовать. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Вот пробую (переделывая готовое-неправильное)
Почему-то ругается на второй while ((( |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Как ругается.
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 2 Всего: 15 |
Ой, я ошибся, в этом случае не ругается - зависает (при нажатии кнопки)! Чтобы узнать где - жму Run -> Program Pause, затем жму раз за разом F7 и вижу, что текущая строчка "гуляет" здесь
т.е. доходит до 2-ого while и и возвращается к 1-ому. Пробовал и F8 - анагалогично. Не пойму - из-за чего? Это сообщение отредактировал(а) I_Am_Rock - 23.5.2009, 19:32 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
I_Am_Rock, ааа. Так второй while просто никогда не выполняется, и все. Проверяй условие в нем.
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |