
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.12.2004, 22:42
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
struct Test { int R1; int R2; int R3; int R4; }; Test TestBase[500]; Отсортировать надо по одному из элементов структуры. То что я дебил - знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.12.2004, 22:45
|
|||
|---|---|---|---|
Помогите тупому отсортировать массив |
|||
|
#18+
Laostruct Test { int R1; int R2; int R3; int R4; }; Test TestBase[500]; Отсортировать надо по одному из элементов структуры. То что я дебил - знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.12.2004, 22:47
|
|||
|---|---|---|---|
Помогите тупому отсортировать массив |
|||
|
#18+
уупс. скролинг ентер нажимает. #include <map> map<int, Test> lstSort; for(int i = 0; i < 500; i++) lstSort[TestBase .R2] = TestBase; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.12.2004, 23:16
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
P.S. приложение Win API : на 'map' ругается при компиляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.12.2004, 23:33
|
|||
|---|---|---|---|
Помогите тупому отсортировать массив |
|||
|
#18+
map - это из библиотеки STL и вообще-то тут не читатели мыслей. Читайте FAQ как оформлять вопросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 04:38
|
|||
|---|---|---|---|
Помогите тупому отсортировать массив |
|||
|
#18+
Попробуй использовать: #include <stdlib.h> void qsort( void *base, size_t num, size_t width, int (*compar) ( const void *, const void *) ); Description: The qsort function sorts an array of num elements, which is pointed to by base, using a modified version of Sedgewick's Quicksort algorithm. Each element in the array is width bytes in size. The comparison function pointed to by compar is called with two arguments that point to elements in the array. The comparison function shall return an integer less than, equal to, or greater than zero if the first argument is less than, equal to, or greater than the second argument. Т.е.: base - адрес начала массива (TestBase), num - количество элементов в массиве (500), width - размер одного элемента массива (sizeof(Test)), compar - функция для сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 04:58
|
|||
|---|---|---|---|
Помогите тупому отсортировать массив |
|||
|
#18+
Блин, забыл. Функция сравнения принимает только 2 параметра, это указатели на сравниваемые элементы массива, имеют тип void*, но никто не мешает приводить их к нужному типу, а вот критерий сортировки придется задавать или глобальной переменной, или через вызов специальной ф-ции, что в принципе однофигственно. Зато не надо ничего изобретать, достаточно задать лишь функцию сравнения. Она возвращает то же, что и strcmp, то бишь отрицательный результат, если первый параметр меньше второго, положительный - если больше, 0, если равен. Также ничто не мешает реализовать обратную сортировку, если поменять возвращаемые значения вручную. Ф-ция, кстати, из Стандарта языка С, так что должна присутствовать в ЛЮБОЙ реализации языка. --- С уважением, Dubrov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 08:04
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
#include "stdafx.h" #include <algorithm> // std::sort struct Test { int R1; int R2; int R3; int R4; bool operator<( const Test& rhs ) const{ return R1 < rhs.R1; } }; int _tmain(int argc, _TCHAR* argv[]) { Test TestBase[500]; std::sort( TestBase, TestBase+500 ); return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 08:04
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
сори забыл ТЭГ поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 09:39
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
кстати std::sort можно передать функтор, только основное отличие от передачи функции - он может быть встроенным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2004, 23:07
|
|||
|---|---|---|---|
|
|||
Помогите тупому отсортировать массив |
|||
|
#18+
Спасибки всем! получилася примерно так: SortBase() { int Kolvo;// количество эл-тов в базе qsort((void *)TestBase,(size_t)Kolvo, sizeof(Test),compare); return 0; } int compare( const void *arg1, const void *arg2 ) { Test *test1,*test2; test1=(struct Test*)arg1; test2=(struct Test*)arg2; switch(SortType) { case 0: if (test1->R1 < test2->R1) return 1; else if (test1->Run100 > test2->Run100) return -1; else return 0; case 1: if (test1->R2 > test2->R2) return 1; ............................ и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2033953]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 185ms |
| total: | 427ms |

| 0 / 0 |
