Форум программистов, компьютерный форум CyberForum.ru

Найти все слова, содержащие подстроку ‘рок’ - C++

Восстановить пароль Регистрация
 
airesjke
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 20
19.11.2012, 09:29     Найти все слова, содержащие подстроку ‘рок’ #1
Дана строка, состоящая из нескольких слов, между соседними словами не менее
одного пробела, за последним словом- точка. Найти все слова содержащие подстроку
‘рок’.

Добавлено через 1 минуту
string
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
19.11.2012, 10:02     Найти все слова, содержащие подстроку ‘рок’ #2
Посчитать их надо или как-то выделить?
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
19.11.2012, 10:11     Найти все слова, содержащие подстроку ‘рок’ #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
#include <algorithm>
 
int main()
{
    std::string str = "hi gitler.";
    std::string sub_str = "git"; 
    // На 'рок' сами замените. Т.к. могут возникнуть проблемы с кодировкой
    // взял англ. текст
    std::string buf(str);
    std::replace_if(buf.begin(), buf.end(), ispunct, ' ');
    std::istringstream stream(buf);
    std::string word;
    while (stream >> word)
        if (word.find(sub_str) != std::string::npos)
            std::cout << word << "\n";
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 14:47     Найти все слова, содержащие подстроку ‘рок’ #4
Предложу еще такой вариант STL решения данной задачи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
int main()
{
    setlocale (LC_ALL, "Russian");
    std::string str = "Дана строкарок, состоящая из нескольрокких слов, между рок соседними словами не менее" 
        " одного пробела, зарок последним роксловом - точка.";
    std::stringstream ss(str);
    std::cout<<"Слова, которые содержат подстроку 'рок':\n\n";
    std::copy_if(std::istream_iterator<std::string>(ss), std::istream_iterator<std::string>(), 
        std::ostream_iterator<std::string>(std::cout, "\n"),
        [](const std::string& s){if ( (s.find("рок") != string::npos) && s!= "рок")  return true; else return false;});
    system("pause");
    return 0;
}
Yandex
Объявления
19.11.2012, 14:47     Найти все слова, содержащие подстроку ‘рок’
Ответ Создать тему
Опции темы

Текущее время: 17:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru