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

Удалить из предложения слова с комбинацией символов - C++

Восстановить пароль Регистрация
 
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
03.08.2013, 17:43     Удалить из предложения слова с комбинацией символов #1
Помогите написать функцию!

Условие: допускается использование любых видов функций.

Разработать функцию, которая удаляет из предложения все слова, содержащие заданную комбинацию символов. Ввести буквосочетание. На основе разработанной функции изъять из введенного предложения все слова, содержащие это буквосочетание. Распечатать результат.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2013, 17:43     Удалить из предложения слова с комбинацией символов
Посмотрите здесь:

[C++] Удалить одинаковые слова предложения, идущие подряд. C++
Удалить из предложения повторяющиеся слова длиной менее трёх букв C++
Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) C++
Удалить из предложения слова, состоящие менее чем из 3 символов. C++
Удалить слова из предложения, в которых встречается буква e C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kordn
 Аватар для Kordn
152 / 131 / 35
Регистрация: 18.05.2013
Сообщений: 289
06.08.2013, 02:20     Удалить из предложения слова с комбинацией символов #2
Такой вариант пойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
 
#include <iostream>
#include <string>
 
using namespace std;
 
int main(){
   string s,str,x;
   cout<<"Enter the sentence: ";
   getline(cin, s);
      cout<<"Enter the letter's combination: ";
   getline(cin, str);
  size_t i=0;
   while (i<s.length())
   {
   if ((s[i]==' ') || (i+1==s.length())) {
   string ex=s.substr(0,i+1);
   if (ex.find(str)==string::npos) x+=ex;
   s.erase(0,i+1);
   i=0;
   }
   else i++;
   }
   cout<<x<<endl;
   system("pause");
    return 0;
}
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 05:00     Удалить из предложения слова с комбинацией символов #3
От моё элегантное решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <regex>
using std::regex;
using std::regex_search;
using std::smatch;
using std::regex_replace;
 
string f1(const string& str,string s)
{
    string s1="([^ ]*)"; s1+=s; s+="([^ ]*)";
    return regex_replace(str,regex(s1),string(""));
}
 
string f2(string str,string s)
{
    string s1="([^ ]*)"; s1+=s; s+="([^ ]*)";
    smatch sm;
    string rez="";
    while(regex_search(str, sm,regex(s1)))
    {
        rez+=sm[0];
        rez+=' ';
        str=sm.suffix();
    }
    return rez;
}
 
int main()
{
    string str="hellow bee da eesebta deeda";
    cout <<"str= "<<str<<endl;
 
    string ydalit6=f1(str,"da");
    string iz69t6 = f2(str,"da");
 
    cout <<"ydalit6= "<<ydalit6<<endl;
    cout <<"iz69t6= "<<iz69t6<<endl;
 
    return 0;
}
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
06.08.2013, 12:00  [ТС]     Удалить из предложения слова с комбинацией символов #4
Цитата Сообщение от Kordn Посмотреть сообщение
Такой вариант пойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
 
#include <iostream>
#include <string>
 
using namespace std;
 
int main(){
   string s,str,x;
   cout<<"Enter the sentence: ";
   getline(cin, s);
      cout<<"Enter the letter's combination: ";
   getline(cin, str);
  size_t i=0;
   while (i<s.length())
   {
   if ((s[i]==' ') || (i+1==s.length())) {
   string ex=s.substr(0,i+1);
   if (ex.find(str)==string::npos) x+=ex;
   s.erase(0,i+1);
   i=0;
   }
   else i++;
   }
   cout<<x<<endl;
   system("pause");
    return 0;
}
Думаю, да, спасибо большое!

Добавлено через 6 минут
Цитата Сообщение от ninja2 Посмотреть сообщение
От моё элегантное решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <regex>
using std::regex;
using std::regex_search;
using std::smatch;
using std::regex_replace;
 
string f1(const string& str,string s)
{
    string s1="([^ ]*)"; s1+=s; s+="([^ ]*)";
    return regex_replace(str,regex(s1),string(""));
}
 
string f2(string str,string s)
{
    string s1="([^ ]*)"; s1+=s; s+="([^ ]*)";
    smatch sm;
    string rez="";
    while(regex_search(str, sm,regex(s1)))
    {
        rez+=sm[0];
        rez+=' ';
        str=sm.suffix();
    }
    return rez;
}
 
int main()
{
    string str="hellow bee da eesebta deeda";
    cout <<"str= "<<str<<endl;
 
    string ydalit6=f1(str,"da");
    string iz69t6 = f2(str,"da");
 
    cout <<"ydalit6= "<<ydalit6<<endl;
    cout <<"iz69t6= "<<iz69t6<<endl;
 
    return 0;
}
Спасибо за помощь!
Но у меня VS 2008, вылетает build failed и fatal error C1083: Cannot open include file: 'regex': No such file or directory. Не скажете, как с этим бороться? Вот здесь http://social.msdn.microsoft.com/For...ude-file-regex пишут, что библиотека должна бы подключаться, но как решить проблему я так и не пойму.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.08.2013, 12:09     Удалить из предложения слова с комбинацией символов #5
Kaskera, regex не так давно добавили (С++11), в VS2008 её нет
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
06.08.2013, 12:52     Удалить из предложения слова с комбинацией символов #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <list>
 
int main()
{
    std::string str;
    std::string tokens;
    std::cout << "string:\n";
    std::getline(std::cin, str);
    std::cout << "tokens:\n";
    std::cin >> tokens;
    using isit = std::istream_iterator<std::string>;
    std::stringstream ss(str);
    std::list<std::string> words( isit( ss ), ( isit() ) );
    str.clear();
    ss.clear();
    ss.str(str);
    std::copy_if( begin(words), end(words), std::ostream_iterator<std::string>(ss, " "),
                [&tokens](const std::string &word)
                { return word.find_first_of(tokens) == std::string::npos; } );
    std::cout << "result:\n";
    std::cout << ss.str();
    return 0;
}
Добавлено через 2 минуты
http://ideone.com/7OT9H0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 13:00     Удалить из предложения слова с комбинацией символов
Еще ссылки по теме:

Распечатка шахматной доски комбинацией символов C++
C++ Разбить текст на предложения, а предложения - на слова
Удалить из заданного предложения все слова, где встречаются цифры C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 13:00     Удалить из предложения слова с комбинацией символов #7
Цитата Сообщение от Kaskera Посмотреть сообщение
Не скажете, как с этим бороться?
Не знаю, у меня vs 2010.
Yandex
Объявления
06.08.2013, 13:00     Удалить из предложения слова с комбинацией символов
Ответ Создать тему
Опции темы

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