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

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

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

удаление слова из строки - C++

08.08.2012, 14:14. Просмотров 971. Ответов 7
Метки нет (Все метки)

Написать программу, которая удаляет слово из некоторого количества слов в строке, в котором гласных букв меньше чем согласных.Заранее благодарен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2012, 14:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос удаление слова из строки (C++):

Удаление слова из строки - C++
Почти все сделал, а со строкой не получается... И слово не удаляет и режет потом строку неправильно. Помогите найти ошибку, пожалуйста: ...

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

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

удаление из строки слова - C++
Помогите написать полностью код программы для поиска в строке слова и его удаления Добавлено через 8 минут и ещё нужно вывести...

Строки. Удаление слова - C++
Удалить слово "Kon" входящее в строку. Язык обычный не Об.Ор-й. Помогите пожалуйста, а то я совсем запуталась(

Удаление слова из строки - C++
Задание: Написать программу удаления последнего слова из строки Код: #include <iostream.h> #include <string.h> main() { char...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
08.08.2012, 15:09 #2
Nikolaj50, язык какой С/С++, поддержка русского нужна или нет?
0
Nikolaj50
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 5
08.08.2012, 15:11  [ТС] #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
язык какой С/С++, поддержка русского нужна или нет?
1.Язык C++
2.Нет,не нужна
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.08.2012, 15:29 #4
Попытался сделать довольно просто
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
45
46
47
48
49
50
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
//ÔóГ*êöèÿ ГўГҐГ°Г*ВёГІ ÈÑÒÈÍÓ åñëè Гў
//ñëîâå word ГЈГ«Г*Г±Г*ûõ áîëüøå Г·ГҐГ¬ ñîãëГ*Г±Г*ûõ
bool isVowelsMore(string word);
 
int main()
{
    string word;//áóäåò ñîäåðГ*æòü ñëîâî ГЁГ§ ГІГҐГЄГ±ГІГ*
    string text;//áóäåò ñîäåðГ*æòü ââîäèìûé ГІГҐГЄГ±ГІ
    cout<<"Enter text : ";
    //getline(cin,text);//ГђГ*ñêîìåГ*òèðîâГ*ГІГј äëÿ ðó÷Г*îãî ââîäГ*
    
    //2 ñòðîêè Г*èæå èçúÿòü åñëè õîòèì ââîäèòü ðóêГ*ìè
    text = "this is the teeeest ooof program";
    cout<<text<<endl;
    stringstream ss(text);//Г€Г*èöèГ*ëèçèðóåì ñòðîêîâûé ïîòîê
    //ГЁГ§ Г*ГҐГЈГ® ìîæГ*Г® áóäåò ÷åðïГ*ГІГј ñëîâГ* ГЄГ*ГЄ ГЁГ§ ifstream
    text = "";//ГЋГ·ГЁГ№Г*ГҐГ¬ ñòðîêó Г± òåêñòîì
    while(ss>>word)
    {
        //ГІ.ГҐ. äåëГ*ГҐГ¬ ГІГҐГЄГ±ГІ òîëüêî ГЁГ§ ñëîâ
        //Гў êîòîðûõ ñîãëГ*Г±Г*ûõ áîëüøå Г·ГҐГ¬ ГЈГ«Г*Г±Г*ûõ
        if(!isVowelsMore(word))
            text += word + " ";
    }
    //Г‘Г*îâГ* ГЇГҐГ·Г*ГІГ*ГҐГ¬ ГІГҐГЄГ±ГІ Г*Г® óæå ГЎГҐГ§ ñëîâ Г± ïðåîáëГ*Г¤Г*Г*ГЁГҐГ¬ ГЈГ«Г*Г±Г*ûõ
    cout<<text<<endl;
    return 0;
}
 
bool isVowelsMore(string word)
{
    int nVowels = 0;//Áóäåò ñîäåðæГ*ГІГј ÷èñëî ГЈГ«Г*Г±Г*ûõ Гў ñëîâå word
    string vowels = "aouyei";
    for(int i = 0; i < word.length(); i++)
    {
        //Óñëîâèå ГІГ*êîå - åñëè word[i] Гў Г*ГЁГ¦Г*ГҐГ¬ ðåãèñòðå
        //(Г’.ГҐ. åñëè áûëî ГЋ ГІГ® ïîñëå tolower Г±ГІГ*Г*ГҐГІ Г®)
        //ñîäåðæèòñÿ Гў ñòðîêå ГўГ±ГҐГµ ГЈГ«Г*Г±Г*ûõ Г«Г*ГІГЁГ*èöû
        if(vowels.find(tolower(word[i]),0) != string::npos)
            nVowels = nVowels + 1;
    }
    //ÂîçâðГ*Г№Г*ГҐГ¬ ðåçóëüòГ*ГІ ëîãè÷åñêîãî Г±Г°Г*ГўГ*ГҐГ*ГЁГї
    //äëèГ*Г*_ñëîâГ* - ÷èëî_ГЈГ«Г*Г±Г*ûõ == ÷èñëî_ñîãëГ*Г±Г*ûõ < ÷èëî_ГЈГ«Г*Г±Г*ûõ)
    return (word.length() - nVowels < nVowels);
}
http://liveworkspace.org/code/335f2d...25e092c4a35ebd
0
Миниатюры
удаление слова из строки  
Nikolaj50
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 5
08.08.2012, 15:33  [ТС] #5
-=ЮрА=-, Спасибо большое!
0
-=ЮрА=-
08.08.2012, 15:34
  #6

Не по теме:

Nikolaj50, если линкуешь на старом компиляторе

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
//getline(cin,text);
- то вот для такого ввода Enter нужно будет жать 2 раза подряд (вот такой вот баг есть у старых компиляторов), на 9-ке, 10-ке такого недостатка нет

0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
08.08.2012, 16:08 #7
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 <vector>
#include <map>
#include <algorithm>
#include <string>
#include <cctype>
 
#include <boost/algorithm/string.hpp>
 
int main()
{
   const std::string vowels = "aeiouy";
   std::string s = "hello and what do you want doing now halt this aab";
   std::vector<std::string> words;
   boost::split(words, s, boost::is_any_of(" "), boost::token_compress_on);
   words.erase(std::remove_if(words.begin(), words.end(), [vowels](const std::string& curr)
   {
      return curr.length() - std::count_if(curr.begin(), curr.end(), [vowels](const char c)
      {
         return vowels.find(tolower(c)) != std::string::npos;
      }) > curr.length() / 2;
   }), words.end());
   for (const auto& word : words)
   {
      std::cout << word << " ";
   }
   std::cout << std::endl;
}
http://liveworkspace.org/code/dd2902...c704cc87e0fe85
2
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
08.08.2012, 18:10 #8
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
45
46
47
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
int main()
{
    static char str[256] = "apple fruit orange fast green tree walk nock";
 
    printf("string = %s\n",str);
 
    int i = 0;
    while (str[i] != '\0')
    {
        if (isspace(str[i]) || i == strlen(str)-1)
        {
            char pchars[] = "aeiuyo"; int vowels = 0;
            int k = (i != strlen(str)-1) ? i-1 : i;
            for (; !isspace(str[k]) && k >= 0; k--)
                if (strchr(pchars,str[k])) vowels++;
 
            int wlen = k < 0 ? i : i - k - 1;
                wlen = (i == strlen(str)-1) ? wlen+1 : wlen;
            if (wlen - vowels > vowels)
            {
                if (i == strlen(str)-1) wlen++;
                for (; wlen >= 0; wlen--)
                {
                    int s = k < 0 ? 0 : k;
                    for (int q = s; str[q] != '\0'; q++)
                        str[q] = str[q+1];
                }
 
                i = 0; continue;
            }
        }
 
        i++;
    }
 
    printf("result = %s\n",str);
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/fb6bec...79a6074c98b48d
0
Миниатюры
удаление слова из строки  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 18:10
Привет! Вот еще темы с ответами:

С++ удаление слова из строки - C++
Дана строка типа S='один два три четыре' удалить из строки последнее слово

Удаление последнего слова из строки - C++
Написать программу удаления последнего слова из строки. Заранее благодарю.

Строки (Удаление слова из строки) - C++
с нахождением слова проблем не возникает, а вот с удалением всех вхождений этого слова проблема! задание:Найти самое длинное слово...

Удаление слова после запятой из строки, упростить программу - C++
Я написал программу для удаления одного слова после запятой, но она получилась очень громистка! Как ее можно записать проще, но чтобы так...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.08.2012, 18:10
Ответ Создать тему
Опции темы

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