Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Сортировка больших чисел


Автор: Voldemar2004 29.8.2006, 19:59
Такой вопрос: в Базе имееются люди с номерами типа:

11372671945
67785242062
83272707042

буквально не хватает одного регистра, чтобы сортировать без проблем.

Считываю из файла эти номера:
Код

                        unsigned long int *NewArray = new unsigned long int[N];

                        for(unsigned long int k = 0; k<N; k++)
                        {
                        NewArray[k] = atol ( arr[k].c_str() );
                        }


Думаю, что лучше здесь будет использовать тип double, но как преобразовать arr[k].c_str() в тип double?

Считываю из файла так: arr[] - имеет тип string (using namespace std).
Код

                        while(!feof(in))
                        {
                        fscanf(in, "%s", &str);
                        arr[i] = str; i++;
                        }


P.S. Знаю, что можно сортировать так: order by <поле> asc/desc - но в данном случае нужен только массив номеров.

Автор: testsergej 29.8.2006, 20:07
Цитата(Voldemar2004 @  29.8.2006,  19:59 Найти цитируемый пост)

P.S. Знаю, что можно сортировать так: order by <поле> asc/desc - но в данном случае нужен только массив номеров. 

В чём проблема? SELECT COUNT(*) даст тебе количество элементов. Создавай массив и заполняй SELECT ... ORDER BY <поле>.

Автор: MAKCim 29.8.2006, 20:13
зачем куда то преобразовывать
храни в виде vector<string> и не мучайся
Код

class comparer
{
public:
    bool operator()(const string& s_a, const string& s_b) const
    {
        ...
    }
};

...
vector<string> vector_;
fstream stream_("data.dat",ios_base::in);
string str_;
while (!stream_.eof())
{
    getline(stream_,str_);
    vector_.push_back(str_);
    str_.clear();
}
sort(vector_.begin(),vector_.end(),comparer());

Автор: Voldemar2004 30.8.2006, 14:57
sergejzr, я же говорил, что в данном случае SQL мне не нужен. MAKCim, обязательно попробую твой код. А использую я стандартную qsort, чтобы не изобретать велосипед.

Всем спасибо. А так, в общем, уже и на VB сделал.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)