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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2015, 00:37   #1
FtorKlork
Пользователь
 
Регистрация: 28.11.2014
Сообщений: 10
По умолчанию Cортировка qsort // C++

С псевдослучайными числами программа отказывается работать. На выходе получается ерунда. Только с константными. Как мне её изменить чтобы работали случайные числа?


PHP код:
#include "stdafx.h"
#include "locale"
#include "cmath"
#include "iostream"
#include <cstdlib>
using namespace std;



int Compare(const void *x1, const void *x2)
{
    
int Arg1 = *(int*)x1//Первый элемент массива
    
int Arg2 = *(int*)x2//Второй элемент массива

    
if(Arg1 Arg2
        return -
1;
    else if (
Arg1 == Arg2)
        return 
0;
    else 
        return 
1;
}

int _tmain(int argc_TCHARargv[])
{
    
    const 
int n=5;
    
double mas[n];
    for(
int i=0;i<n;i++)
    {
        
mas[i]=rand()%100+1;
    }

    
cout<<"Исходный массив:\n";
    for(
int i=0;i<n;i++)
        
cout<<"["<<i<<"]="<<mas[i]<<endl;

    
qsort(masn,  sizeof(mas[0]), Compare); 
    
    
cout<<endl;
    for(
int i=0;i<n;i++)
        
cout<<mas[i]<<endl;

    
system("pause");

FtorKlork вне форума Ответить с цитированием
Старый 10.01.2015, 00:52   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Может, так:
Код:
    int Arg1 = *((int*)x1); //Первый элемент массива
    int Arg2 = *((int*)x2); //Второй элемент массива
?
Smogg вне форума Ответить с цитированием
Старый 10.01.2015, 01:12   #3
FtorKlork
Пользователь
 
Регистрация: 28.11.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
Может, так:
Код:
    int Arg1 = *((int*)x1); //Первый элемент массива
    int Arg2 = *((int*)x2); //Второй элемент массива
?
Нет. Я и побывал динамическую память выделять A=new double[n]
FtorKlork вне форума Ответить с цитированием
Старый 10.01.2015, 01:42   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Нук, если сравниваешь даблы, приведенные к интам, то и получаешь фигню. Void же он и есть void.
Код:

int CompareDbl(const void *x1, const void *x2)
{
	double Arg1 = *(double*)x1; //Первый элемент массива
	double Arg2 = *(double*)x2; //Второй элемент массива

	if(Arg1 < Arg2) 
		return -1;
	else if (Arg1 == Arg2)
		return 0;
	else 
		return 1;
}
Smogg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
qsort для double WebbMan Общие вопросы C/C++ 2 02.12.2012 17:34
Qsort и структуры Lohmatiyy Общие вопросы C/C++ 2 27.06.2011 13:02
qsort Jauhen Общие вопросы C/C++ 5 26.05.2010 01:15
qsort и структуры burzum Общие вопросы C/C++ 1 26.11.2009 13:23
Функция qsort() phpcreator Общие вопросы C/C++ 1 19.10.2009 22:34