0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 34
1

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

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

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

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

Разработать функцию, которая удаляет из предложения все слова, содержащие заданную комбинацию символов. Ввести буквосочетание. На основе разработанной функции изъять из введенного предложения все слова, содержащие это буквосочетание. Распечатать результат.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2013, 17:43
Ответы с готовыми решениями:

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

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

Вывести те слова предложения, которые отличны от последнего слова предложения и удовлетворяют следующему свойству:
C помощью текстового редактора создать файл, содержащий текст не более 10 строк, длина строки...

Вывести те слова предложения, которые отличны от последнего слова предложения и удовлетворяют следующему свойству:
C помощью текстового редактора создать файл, содержащий текст не более 10 строк, длина строки...

6
158 / 137 / 106
Регистрация: 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
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
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
0 / 0 / 1
Регистрация: 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.c... file-regex пишут, что библиотека должна бы подключаться, но как решить проблему я так и не пойму.
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,726
06.08.2013, 12:09 5
Kaskera, regex не так давно добавили (С++11), в VS2008 её нет
0
414 / 410 / 95
Регистрация: 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
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
06.08.2013, 13:00 7
Цитата Сообщение от Kaskera Посмотреть сообщение
Не скажете, как с этим бороться?
Не знаю, у меня vs 2010.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2013, 13:00
Помогаю со студенческими работами здесь

Вывести те слова предложения, которые отличны от последнего слова предложения и удовлетворяют следующему свойству:
C помощью текстового редактора создать файл, содержащий текст не более 10 строк, длина строки...

Удалить одинаковые слова предложения, идущие подряд
Объясните как это сделать с помощью библиотеки &lt;string.h&gt; Удалить одинаковые слова предложения,...

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

Удалить из предложения все слова заканчивающеся на гласную букву
Здраствуйте, не понимаю как реализовать задание. удалите из выходного предложения все слова...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru