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


Автор: pharrell 29.6.2006, 12:08
Можно это все как то попроще написать,а то я никак не разберусь.
 template<class Stream>
    unsigned int find_deleted_string(Stream& stream)
{
    string str_;
    map<unsigned char,unsigned int> map_;
    unsigned int line_=0, count_=0, old_line_=0;
    while (!stream.eof())
    {
        unsigned int old_=0;
        getline(stream,str_);
        for (unsigned char i=0; i<256; ++i) map_[i]=0;
        for (string::iterator i=str_.begin(); i!=str_.end(); ++i) map_[*i]++;
        for (map<unsigned char,unsigned int>::iterator i=map_.begin(); i!=map_.end(); ++i)
            if ((*i).second) ++old_;
        if (old_>count_) line_=old_line_, count_=old_;
        str_.clear();
        ++old_line_;
    }
    return line_;
}

 
 
 

Автор: Daevaorn 29.6.2006, 12:14
pharrell, 
Одно можно сразу сказать точно: map тут не нужен совсем - от него нет смысла 

Автор: pharrell 29.6.2006, 12:22
А вообще как более просто можно его переписать? 

Автор: Xenon 29.6.2006, 12:39
Дык там, где тебе MAKCim ответил, там у него и спрашивай. По ходу дела он над тобой издевается  smile  

Автор: MAKCim 29.6.2006, 12:44
Цитата

А вообще как более просто можно его переписать?  

можно (чистый С) находит количество различных символов в строке
Код

size_t count(const char* string)
{
    char buffer[256]={0};
    size_t size=strlen(string), i=0, count=0, j=256;
    while (i<size) ++buffer[*(string+i)];
    while (j)
        if (buffer[--j]) ++count;
    return count;
}


Добавлено @ 12:46 
Цитата

По ходу дела он над тобой издевается

не, я порядочный  smile  

Автор: pharrell 29.6.2006, 13:06
Спасибо большое!!!!!! 

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