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

Вывод слов с тремя или более гласными - C++

Восстановить пароль Регистрация
 
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
18.04.2011, 19:57     Вывод слов с тремя или более гласными #1
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
#include <cstdlib>
#include <iostream>
#include <string>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int s=0, g=0;
    string st;
    cout << "Vvedite predlozenie: " ;
    getline (cin, (st));
    for (int i=0; i<st.size (); ++i)
    {
        if (st[i] == ' ' && st[i+1]!= ' ')
        {s++;} 
        }
        if (s==0)
        {s=1;}
        else
        {if (s==1)
        s=2;
        else
        s++;}
         for (int i=0; i<st.size (); ++i) //поиск гласных
    {
        if (st[i]=='A' || st[i]=='E' || st[i]=='I' || st[i]=='O'
        || st[i]=='U' || st[i]=='Y' || st[i]=='a' || st[i]=='e'
        || st[i]=='i' || st[i]=='y' || st[i]=='u')
{
        g++;
        }}
        
        cout << "Slov: " << s << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
нужно вывести на экран слова с тремя или более гласными. как это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 19:57     Вывод слов с тремя или более гласными
Посмотрите здесь:

C++ найти и поменять местами пару слов, у которых первые три буквы одного совпадают с последними тремя буквами другого (дописать)
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Вывод слов с наличием двух и более подряд идущих гласных букв C++
Подсчёт слов в строке и вывод тех, которые встречаются более n раз C++
C++ STL: Сортировка слов по количеству согласных букв; вывод слов, встречающихся в списке более одного раза
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.04.2011, 20:29     Вывод слов с тремя или более гласными #2
Цитата Сообщение от Ardarik Посмотреть сообщение
нужно вывести на экран слова с тремя или более гласными. как это можно сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
 
int main(){
  static const std::string &VOWELS("AaEeIiOoUuYy");
  std::string str;
  std::cout << "\n\nString = ";
  getline(std::cin, str);
  std::istringstream ist(str);
  struct Func{
    bool operator() (const char &a) const{
      return VOWELS.find(a) != std::string::npos;
    }
  };
  while(ist >> str)
    if(std::count_if(str.begin(), str.end(), Func()) >= 3)
      std::cout << str << ' ';
  return 0;
}
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
18.04.2011, 22:04  [ТС]     Вывод слов с тремя или более гласными #3
Ругается на 18 строчку. никакое сопоставление функции для вызова, чтобы...
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.04.2011, 22:09     Вывод слов с тремя или более гласными #4
Ardarik, Не знаю, у меня все без ошибок компилирует.
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
18.04.2011, 22:12  [ТС]     Вывод слов с тремя или более гласными #5
Пользуюсь dev-c++, от этого может быть?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.04.2011, 22:16     Вывод слов с тремя или более гласными #6
Ardarik, Хз, компилировал на mingw 4.6.0 - все норм.
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
18.04.2011, 22:20  [ТС]     Вывод слов с тремя или более гласными #7
Спасибо хоть на этом, буду разбираться
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.04.2011, 22:47     Вывод слов с тремя или более гласными #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
#include <iostream>
#include <string>
#include <sstream>
 
int vowels_count(const std::string & s){
    static const std::string VOW("AaEeIiOoUuYy");
    int cnt(0), pos(0);
    while ( ( pos = s.find_first_of(VOW, pos) ) != std::string::npos ){
        ++cnt;
        ++pos;
    }
    return cnt;
}
 
int main(){
    const int NEEDED(3);
    std::string buf;
    
    while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() ){
        std::istringstream ist(buf);
        while ( ist >> buf )
            if ( vowels_count(buf) >= NEEDED )
                std::cout << buf << std::endl;
    }
    
    return 0;
}
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
19.04.2011, 21:37  [ТС]     Вывод слов с тремя или более гласными #9
Спасибо, вот это сразу у меня заработала, только пока не доконца понял как работает
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
23.04.2011, 20:26  [ТС]     Вывод слов с тремя или более гласными #10
Я вот тут считал сколько слов а в код easybudda чет не получается вставить
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i=0; i<s.size (); ++i)
    {
        if (s[i] == ' ' && s[i+1]!= ' ')
        {ss++;} 
        }
        if (ss==0)
        {ss=1;}
        else
        {if (ss==1)
        ss=2;
        else
        ss++;}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.04.2011, 21:10     Вывод слов с тремя или более гласными #11
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
#include <iostream>
#include <string>
#include <sstream>
 
int vowels_count(const std::string & s){
    static const std::string VOW("AaEeIiOoUuYy");
    int cnt(0), pos(0);
    while ( ( pos = s.find_first_of(VOW, pos) ) != std::string::npos ){
        ++cnt;
        ++pos;
    }
    return cnt;
}
 
int main(){
    const int NEEDED(3);
    std::string buf;
    
    while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() ){
        std::istringstream ist(buf);
        int cnt(0);
        while ( ist >> buf )
            if ( vowels_count(buf) >= NEEDED && ++cnt )
                std::cout << buf << std::endl;
        std::cout << cnt << " words." << std::endl;
    }
    
    return 0;
}
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
24.04.2011, 21:26  [ТС]     Вывод слов с тремя или более гласными #12
А как чтоб все слова считал?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2011, 21:47     Вывод слов с тремя или более гласными
Еще ссылки по теме:

Бинарное дерево поиска.Вывести слова с тремя гласными C++
Вывод двух и более слов C++
C++ Моделирование устройства с тремя кнопками и тремя лампочками: красной, желтой и зеленой

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
24.04.2011, 21:47     Вывод слов с тремя или более гласными #13
Вывод слов с тремя или более гласными
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <sstream>
 
int main()
{
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream(s);
 
    size_t cnt;
    std::string token;
    while(stream >> token)
    {
         cnt = std::count_if(token.begin(), token.end(),
                             std::bind1st(std::ptr_fun(strchr), "AaEeIiOoUuYy"));
         if(cnt >= 3) std::cout << token << '\n';
    }
 
    return 0;
}
Yandex
Объявления
24.04.2011, 21:47     Вывод слов с тремя или более гласными
Ответ Создать тему
Опции темы

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