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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 17:04   #1
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию qsort для double

Не могу понять почему так не работает
Код:
#define swap(x,y)  {double t=x; x=y; y=t;}
void qs(double * s_arr, int first, int last)
{
	int i = first, j = last, x = s_arr[(first + last) / 2];

	do {
		while (s_arr[i] < x) i++;
		while (s_arr[j] > x) j--;

		if(i <= j) {
			if (i < j) swap(s_arr[i], s_arr[j]);
			i++;
			j--;
		}
	} while (i <= j);

	if (i < last)
		qs(s_arr, i, last);
	if (first < j)
		qs(s_arr, first,j);
}
qs(MAS, 0, size-1);
А так работает
Код:
void qs(int * s_arr, int first, int last)
{
	int i = first, j = last, x = s_arr[(first + last) / 2];

	do {
		while (s_arr[i] < x) i++;
		while (s_arr[j] > x) j--;

		if(i <= j) {
			if (i < j) swap(s_arr[i], s_arr[j]);
			i++;
			j--;
		}
	} while (i <= j);

	if (i < last)
		qs(s_arr, i, last);
	if (first < j)
		qs(s_arr, first,j);
}
qs((int *)MAS, 0, size-1);
WebbMan вне форума Ответить с цитированием
Старый 02.12.2012, 17:32   #2
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию

Вопрос решен, неправильно указан был тип double x = s_arr[(first + last) / 2];
WebbMan вне форума Ответить с цитированием
Старый 02.12.2012, 17:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
qs(&MAS, 0, size-1);
Или :
Код:
qs((double *)MAS, 0, size-1);
По аналогии с qs((int *)MAS, 0, size-1);
Т.е. передавать нуна указатель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отличие double и long double в Вижиал cover Общие вопросы C/C++ 1 14.10.2012 13:53
Qsort и структуры Lohmatiyy Общие вопросы C/C++ 2 27.06.2011 13:02
Задание функции compare для qsort Farrel Общие вопросы C/C++ 9 26.02.2011 23:54
функция pow(double x, double y) Не могу понять в чем ошибка Vlashel Помощь студентам 3 07.10.2010 16:28
qsort Jauhen Общие вопросы C/C++ 5 26.05.2010 01:15