Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <boost/tokenizer.hpp>
 
typedef std::vector<std::string> V;
typedef boost::tokenizer<boost::char_separator<char> > char_tokenizer;
typedef std::map<std::string, bool> unique_map;
 
V get_strings()
{
    V v;
 
    // каким-нубудь образом заполним массив строками
    v.push_back("1 2 3");
    v.push_back("2");
 
    return (v);
}
 
void test_2()
{
    /*
    Дано 10 символьных строк, состоящих из слов, разделенных пробелами.  
    Вывести список неповторяющихся слов.
    */
 
    V v = get_strings();
    
    unique_map strings; // ассоциативный массив для выявления неповторяющихся слов
    boost::char_separator<char> separator(" ");
 
    // парсинг ...
    for(V::const_iterator stringIt = v.begin(); stringIt != v.end(); ++stringIt)
    {
        char_tokenizer tokens(*stringIt, separator);
        for(char_tokenizer::const_iterator it = tokens.begin(); it != tokens.end(); ++it)
        {
            unique_map::iterator mapIt = strings.find(*it);
            if (mapIt == strings.end())
            {
                // строка пока встретилась только 1 раз
                strings.insert(unique_map::value_type(*it, true));
            }
            else
            {
                // повтор строки - сбрасываем флаг уникальности
                mapIt->second = false;
            }
        }
    }
 
    // вывод результата
    for(unique_map::const_iterator it = strings.begin(); it != strings.end(); ++it)
    {
        if (it->second)
        {
            std::cout << it->first << std::endl;
        }
    }
}
 


Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 14:09 23-01-2007 | Исправлено: distance, 14:20 23-01-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru