Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
#1

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

03.08.2013, 17:43. Просмотров 661. Ответов 6
Метки нет (Все метки)

Помогите написать функцию!

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

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

Удалить из предложения слова, состоящие менее чем из 3 символов. - C++
Помогите пожалуйста в чем ошибка( Удалить из предложения менее, чем из 3 букв? #include <iostream> #include <vector> #include...

Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) - C++
Дано два предложения. Распечатать: - слова из первого предложения, который начинаются на первую букву последнего слова второго...

Удалить одинаковые слова предложения, идущие подряд - C++
Объясните как это сделать с помощью библиотеки <string.h> Удалить одинаковые слова предложения, идущие подряд.

Удалить слова из предложения, в которых встречается буква e - C++
суть задачи такова : Есть строка неизвестной длины с англо-цифровыми буквами и словами. нужно удалить слова содержащие букву "e" (англ),...

Удалить из предложения повторяющиеся слова длиной менее трёх букв - C++
Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать это предложение, удалив из него те слова, которые...

Удалить из заданного предложения все слова, где встречаются цифры - C++
Составить и отладить программу, которая удаляет (путем сжатия) из заданного предложения все слова, где встречаются цифры, сохраняя знаки...

6
Kordn
156 / 135 / 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;
}
1
ninja2
231 / 187 / 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;
}
1
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 пишут, что библиотека должна бы подключаться, но как решить проблему я так и не пойму.
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
06.08.2013, 12:09 #5
Kaskera, regex не так давно добавили (С++11), в VS2008 её нет
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
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
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 13:00 #7
Цитата Сообщение от Kaskera Посмотреть сообщение
Не скажете, как с этим бороться?
Не знаю, у меня vs 2010.
0
06.08.2013, 13:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 13:00
Привет! Вот еще темы с ответами:

Удалить из предложения слова, которые встретились в нем более одного раза - C++
Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать это предложение, удалив из него слова, которые встретились...

Распечатка шахматной доски комбинацией символов - C++
Доброго времени суток! Необходимо распечатать шахматную доску используя влож.циклы. Для начала хотелось распечатать хотя бы первые 4...

Удалить слова, состоящие ровно из К символов - C++
Ввести стоку, распечатать. Удалить слова, состоящие ровно из К символов.Результирующию строку распечатать. Помогите кто может!

Напечатать все слова заданного предложения, состоящие из тех же букв, что и первое слово предложения - C++
Напечатать все слова заданного предложения (слова разделены пробелами), состоящие из тех же букв, что и первое слово предложения.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru