Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите тупому отсортировать массив / 11 сообщений из 11, страница 1 из 1
20.12.2004, 22:42
    #32835952
Lao
Lao
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
struct Test
{
int R1;
int R2;
int R3;
int R4;
};
Test TestBase[500];

Отсортировать надо по одному из элементов структуры.
То что я дебил - знаю.
...
Рейтинг: 0 / 0
20.12.2004, 22:45
    #32835953
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
Laostruct Test
{
int R1;
int R2;
int R3;
int R4;
};
Test TestBase[500];

Отсортировать надо по одному из элементов структуры.
То что я дебил - знаю.
...
Рейтинг: 0 / 0
20.12.2004, 22:47
    #32835956
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
уупс. скролинг ентер нажимает.

#include <map>

map<int, Test> lstSort;
for(int i = 0; i < 500; i++)
lstSort[TestBase .R2] = TestBase;
...
Рейтинг: 0 / 0
20.12.2004, 23:16
    #32835969
Lao
Lao
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
P.S.
приложение Win API : на 'map' ругается при компиляции
...
Рейтинг: 0 / 0
20.12.2004, 23:33
    #32835981
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
map - это из библиотеки STL

и вообще-то тут не читатели мыслей. Читайте FAQ как оформлять вопросы
...
Рейтинг: 0 / 0
21.12.2004, 04:38
    #32836049
Dubrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
Попробуй использовать:

#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 - функция для сравнения.
...
Рейтинг: 0 / 0
21.12.2004, 04:58
    #32836051
Dubrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
Блин, забыл. Функция сравнения принимает только 2 параметра, это указатели на сравниваемые элементы массива, имеют тип void*, но никто не мешает приводить их к нужному типу, а вот критерий сортировки придется задавать или глобальной переменной, или через вызов специальной ф-ции, что в принципе однофигственно. Зато не надо ничего изобретать, достаточно задать лишь функцию сравнения. Она возвращает то же, что и strcmp, то бишь отрицательный результат, если первый параметр меньше второго, положительный - если больше, 0, если равен. Также ничто не мешает реализовать обратную сортировку, если поменять возвращаемые значения вручную. Ф-ция, кстати, из Стандарта языка С, так что должна присутствовать в ЛЮБОЙ реализации языка.
---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
21.12.2004, 08:04
    #32836098
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
#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;
}
...
Рейтинг: 0 / 0
21.12.2004, 08:04
    #32836099
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
сори забыл ТЭГ поставить
...
Рейтинг: 0 / 0
21.12.2004, 09:39
    #32836186
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
кстати std::sort можно передать функтор, только основное отличие от передачи функции - он может быть встроенным.
...
Рейтинг: 0 / 0
21.12.2004, 23:07
    #32837949
Lao
Lao
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите тупому отсортировать массив
Спасибки всем!
получилася примерно так:

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;

............................ и т.д.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите тупому отсортировать массив / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]