Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция сортировки массива структур, сортировка массива структур 
:(
    Опции темы
alextih1992
Дата 23.12.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Добрый Вечер!
Если нетрудно, помогите решить следующую проблему:

Имею картотеку, одна запись - структура из 9 полей. Отображаю ее в виртуальном listctrl. По клику по колонке, я должен отсортировать всю картотеку по выбранному полю. Сортировку пишу методом вставки таким образом:

void CNoteBookView::OnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    // TODO: добавьте свой код обработчика уведомлений
    int number_column;
    number_column = pNMLV ->iSubItem;
    // далее код собственно сортировки методом вставки
    int Result = 0;
    int tempINT;        // переменная для чисел
    CString tempSTRING; // переменная для строк
    int tempNumb;        // переменная для сохранения номера j
    for (int j = 0; j < Amount; j++)
    {
        number_column = 1;
        tempSTRING = IndexTable[j]->LastName;                }
        tempNumb = j;
        for (int i = j; i > 0; i--)
        {
            
            Result = IndexTable[i-1]->LastName.Compare(IndexTable[tempNumb]->LastName);        
            }
            if (Result < 0)
            {
                IndexTable[i] = IndexTable[i-1]; 
                IndexTable[i-1] = IndexTable[tempNumb];
            }
        }
    }
    MyList.DeleteAllItems();
    MyList.SetItemCountEx(Amount);
    *pResult = 0;
}


Однако: отображаеься вместо 5 разных отсортированных элементов, 5 раз последний элемент.
Пожалуйста, помогите написать правильно работающую функцию!
Заранее Спасибо.
PM MAIL   Вверх
mes
Дата 23.12.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(alextih1992 @  23.12.2010,  20:30 Найти цитируемый пост)
Пожалуйста, помогите написать правильно работающую функцию!

ну для начала пройдитесь по скобкам... одна явно лишняя..
ну и не мешало бы оформить код соответствующими тегами..



--------------------
PM MAIL WWW   Вверх
triclosan
Дата 23.12.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



определите для структуры operator< и используйте std::sort
PM MAIL   Вверх
alextih1992
Дата 23.12.2010, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



triclosan, 
а можно чуть по подробней?
какой operator?
PM MAIL   Вверх
triclosan
Дата 23.12.2010, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



если с operator нескладуха - определи "функцию-компаратор"

Код

bool myfunction (strucTYPE i, strucTYPE j) { return i->LastName.Compare(j->LastName)>0; }


std::sort (IndexTable, IndexTable+Amount, myfunction);

PM MAIL   Вверх
alextih1992
Дата 23.12.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



спасибо, попробую!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.