|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2012, 13:30 | #1 | |
Пользователь
Регистрация: 25.03.2012
Сообщений: 60
|
упорядочить массив С++
Каким образом можно упорядочить массив User users /*см.код*/по его параметрам karma /*см.код*/ от меньшего к большему? Параметры карма упорядочить я смог. А вот как теперь исходя из них упорядочить "users" не знаю... SOS
Цитата:
|
|
04.04.2012, 16:06 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,292
|
Просто ваша сортировка в корне неправильна.
Нужно сортировать не значения карм ( по сути, просто числа), а структуры по значению кармы. Попробуйте так: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
04.04.2012, 17:17 | #3 |
Пользователь
Регистрация: 25.03.2012
Сообщений: 60
|
Выбивает ошибку: const void* can not be used to initialize an entity of type User*
int karmaCmp(const void* pa, const void* pb) { User *a = pa; User *b = pb; return a->karma - b->karma; } |
04.04.2012, 17:40 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,292
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
04.04.2012, 19:23 | #5 |
Пользователь
Регистрация: 25.03.2012
Сообщений: 60
|
Все работает. Спасибо. Чудесно. Но не совсем понимаю как работает последняя функция... Простите за неграмотность. Если не сложно - попрошу ее детально прокомментировать. Заранее спасибо.
|
04.04.2012, 19:53 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,292
|
Честно говоря, когда я столкнулся с данной проблемой сам (с сортировкой кусортом), то я не сам дошел до правильного описания.
Постараюсь объяснить, как понимаю. В функцию передаются два параметра типа указатель на неизвестный тип. Создаем временные указатели в теле самой функции. Для присвоения созданным указателям значений указываем, что переменные pa и pb типа указатель на структуру User (т.к. qsort передает указатели на значения массива, который сортирует). Дальше все просто - обращаемся к полям стурктур, используя вместо конструкции *(a).karma конструкцию a->karma, и возвращаем разность, которая показывает, какой элемент считать большим.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
F1, как упорядочить массив | marinasava | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 22.12.2011 23:16 |
нужно упорядочить массив | яна11 | C++ Builder | 0 | 24.04.2011 15:45 |
Упорядочить массив по невозрастанию! | Cyber | Помощь студентам | 2 | 23.09.2010 09:31 |
одномерный массив. упорядочить | serj-07 | Помощь студентам | 11 | 18.01.2010 01:28 |
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. | TheVenny | Помощь студентам | 3 | 26.11.2008 15:06 |