Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Frozen_Sky:
кстати, вроде неплохой вариант, а можно хотя бы примерно глянуть как это выглядеть должно? »
Не знаю, зачем оно вам, не должно, а один из вариантов. Например, так:
читать дальше »
Код: Выделить весь код
#include <iostream>
#include <string>
#include <list>
#include <sstream>
#include <map>
#include <algorithm>

std::string get_letters(std::string word)
{
    std::string letters;
    for (size_t i = 0; i < word.length(); ++i)
        if (letters.find(word[i], 0) == std::string::npos)
            letters.push_back(word[i]);
    std::sort(letters.begin(), letters.end());
    return letters;
}

int main()
{
    std::list<std::string> words;
    std::string text = "abba abaa abca ab abc abd ddbba abcccba";
    std::istringstream ist(text);
    std::string buffer;
    while (ist >> buffer)
        words.push_back(buffer);
    std::cout << "Number of words: " << words.size() << std::endl;

    std::map<std::string, std::list<std::string> > table;
    for (std::list<std::string>::iterator it = words.begin(); it != words.end(); ++it)
        table[get_letters(*it)].push_back(*it);

    for (std::map<std::string, std::list<std::string> >::iterator it = table.begin(); it != table.end(); ++it)
    {
        std::cout << it->first << ": ";
        for (std::list<std::string>::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2)
            std::cout << *it2 << ' ';
        std::cout << std::endl;
    }

    return 0;
}

На академичности и чистоту кода не претендую, про auto слышал.
А вообще, pva прав, сейчас задача
Цитата pva:
научиться "придумывать" программы »
.

Отправлено: 08:30, 27-05-2014 | #6