Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 16:29   #1
Sneggger
Новичок
Джуниор
 
Регистрация: 25.02.2012
Сообщений: 2
По умолчанию Библиотека stdlib.h (C)

Хочу научиться использовать функции сортировки и поиска из библиoтеки stdlib.h . Для этого сначала нужно написать свою функцию сравнения:

int longcompare(const long *i, const long *j)
{
if (*i > *j) return 1;
if (*i < *j) return -1;
return 0;
}

Потом я в теле main вызываю сортирующую функцию:
qsort((long *) array, n, sizeof(long), longcompare);

Но компилятор почему-то выдаёт ошибку:
<начало>
1>c:\users\максим\documents\visual studio 2008\projects\temp\temp\temp.cpp(25 ) : error C2664: qsort: невозможно преобразовать параметр 4 из 'int (__cdecl *)(const long *,const long *)' в 'int (__cdecl *)(const void *,const void *)'
1> Конечному типу не соответствует ни одной функции с данным именем в области видимости
<конец>

Как это исправить?
Sneggger вне форума Ответить с цитированием
Старый 25.02.2012, 16:35   #2
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

У тебя параметры функции сравнения должны быть типа const void *, которые потом надо явно приводить к твоему типу:
Код:
int longcompare (const void *vi, const void *vj)
 {
 long *pi=(long *)vi;
 long *pj=(long *)vj;
 if (*i > *j) return 1;
 if (*i < *j) return -1;
 return 0;
 }
Вот, он пишет об этом:
<начало>
1>c:\users\максим\documents\visual studio 2008\projects\temp\temp\temp.cpp(25 ) : error C2664: qsort: невозможно преобразовать параметр 4 из
'int (__cdecl *)(const long *,const long *)' в
'int (__cdecl *)(const void *,const void *)'
1> Конечному типу не соответствует ни одной функции с данным именем в области видимости
<конец>
Nobody expects Spanish Inquisition!

Последний раз редактировалось Juffin; 25.02.2012 в 16:39.
Juffin вне форума Ответить с цитированием
Старый 25.02.2012, 16:51   #3
Sneggger
Новичок
Джуниор
 
Регистрация: 25.02.2012
Сообщений: 2
По умолчанию

Спасибо! Я исправил, и теперь всё работает
Sneggger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека btf Общие вопросы по программированию, компьютерный форум 0 03.12.2011 17:40
Библиотека Си++ Мелия Помощь студентам 2 21.06.2011 15:52
Библиотека C# Lucky777 Помощь студентам 0 06.06.2011 02:16
Библиотека c++\noob Общие вопросы C/C++ 0 19.03.2011 11:11