![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Может кто подскажет почему выводится только первый элемент? Сортировка по полю year. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
А чего то я не вижу чтоб в коде был вывод. Или Вы телепатические способности форумчан проверяете ? ну так бы и указали в названии сортировки, чем лишний комментарий писать из того что бросилось в глаза : а где return ? year у Вас объявлен как int, а значит отрицательные значения не отсортируются. ну и напоследок : сделайте элементарные функции необходимые для работы сортировки, например swap для обмена местами двух элементов списка и тогда не придется разбираться в куче сваленного вместе кода. конечно также было бы хорошо отсоединить список от описания структуры. т.е так :
это также уменьшит головомойку при написании кода. Это сообщение отредактировал(а) mes - 16.3.2009, 21:18 |
||||
|
|||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Года - все положительные.
Печать вызываю с главной функции
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а почему грeшите на сортировку ? до сортировки у Вас список нормально выводится ? Это сообщение отредактировал(а) mes - 16.3.2009, 21:19 |
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
До сортировки все нормально выводится.
Добавлено через 2 минуты и 48 секунд Сделал печать перед каждым новым вызовом рекурсии (return sort) ВОт что выводит после каждого прохождения, в консоли:
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
Master_, выложите функцию read_file и сам файл с которого читаешь.
p_pred - я сначала думал, что это предикат. а это предЫдущий? ещё вопрос: функцию сортировки вы с головы придумали или это алгоритм какой-то? Это сообщение отредактировал(а) zim22 - 16.3.2009, 21:51 |
|||
|
||||
| Master_ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Код
Файл прикрепляю Содержимое файла:
Это сообщение отредактировал(а) Master_ - 16.3.2009, 22:00 Присоединённый файл ( Кол-во скачиваний: 5 )
list.txt 0,24 Kb |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в новой ветви рекурсии при обмене с новонайденным не учитывается оставшийся в предыдущей ветви элемент. решается путем отделения списка от самого значения (как написано во 2м посту) и обменом самих значений, а не элементов списка. |
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Может можно как-то сделать с существующим списком? Просто переделывать остальное не хочется..
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Переделовать делов на 5-20 минут, а чтоб добиться правильной работы придется мучаться не один час, находя все новые и новые баги Так что если своего времени не жалко, не переделывайте - лично я в таком случае пас. Это сообщение отредактировал(а) mes - 16.3.2009, 23:00 |
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Можно тогда приимерчик с использованием StructNode?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
примерно так :
т.е как можно видеть по коду, список не меняет очередности элементов, а лишь происходит обмен значений (в нашем случае указателей на структуру Student) P.S. компилить и тестировать не пробовал..но предполагаю что код рабочий. Это сообщение отредактировал(а) mes - 17.3.2009, 00:39 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Нельзя ли поподробней ? Kак будет влиять кол-во полей структуры Student на обмен значений двух указателей ?! Насчет двусвязанногo списка : выгода при применение будет от алгоритма обхода списка , a не от возможности менять элементы Это сообщение отредактировал(а) mes - 17.3.2009, 00:45 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Может я недопонял алогритм - мне показалось надо поменять местами структуры: т.е. нашли искомую с наименьшим (наибольшим) годом и поставили ее на текущее место, а текущую на место той, которую нашли - затем следующая итерация. В виду того, что мы не знаем предка текущей - мы вместо этого меняем год, оставляя остальные поля без изменений. Получится, что года отсортировали, а фамилии оставили... Либо я просто неврубился - тогда извините. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |