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

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

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

#include <map>

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

и вообще-то тут не читатели мыслей. Читайте FAQ как оформлять вопросы
...
Рейтинг: 0 / 0
Помогите тупому отсортировать массив
    #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
Помогите тупому отсортировать массив
    #32836051
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, забыл. Функция сравнения принимает только 2 параметра, это указатели на сравниваемые элементы массива, имеют тип void*, но никто не мешает приводить их к нужному типу, а вот критерий сортировки придется задавать или глобальной переменной, или через вызов специальной ф-ции, что в принципе однофигственно. Зато не надо ничего изобретать, достаточно задать лишь функцию сравнения. Она возвращает то же, что и strcmp, то бишь отрицательный результат, если первый параметр меньше второго, положительный - если больше, 0, если равен. Также ничто не мешает реализовать обратную сортировку, если поменять возвращаемые значения вручную. Ф-ция, кстати, из Стандарта языка С, так что должна присутствовать в ЛЮБОЙ реализации языка.
---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
Помогите тупому отсортировать массив
    #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
Помогите тупому отсортировать массив
    #32836099
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
сори забыл ТЭГ поставить
...
Рейтинг: 0 / 0
Помогите тупому отсортировать массив
    #32836186
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
кстати std::sort можно передать функтор, только основное отличие от передачи функции - он может быть встроенным.
...
Рейтинг: 0 / 0
Помогите тупому отсортировать массив
    #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
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите тупому отсортировать массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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