Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нахождение в строке слов,начинающихся на гласную. С++

1.8K
11 марта 2008 года
CilCatblack
251 / / 20.09.2007
Нужно создать программу которая выводит из строки символов слова начинающиеся на гласную букву(все буквы английские).
Как определить начало и конец слова?:confused:
И как узнать гласная буква или согласная?:confused:

если можно пример пожалуйста:o
Нужно срочно!
2
11 марта 2008 года
squirL
5.6K / / 13.08.2003
Цитата: CilCatblack
Нужно создать программу которая выводит из строки символов слова начинающиеся на гласную букву(все буквы английские).
Как определить начало и конец слова?:confused:
И как узнать гласная буква или согласная?:confused:

если можно пример пожалуйста:o
Нужно срочно!


Цитата:

Гласные - тип звука, при артикуляции которого потоку воздуха не создаётся существенных препятствий, соответственно, нигде над гортанью не создаётся сколько-нибудь существенного воздушного давления.


отсюда - узнать программно - гласная или согласная буква у тебя - не представляется возможным :)
поэтому, используя знания из школьной программы, составляешь массив гласных и массив согласных и проверяешь буквы на вхождения в эти массивы.
по поводу границы слова - если перед/после буквы в слове - не алфавитно-цифровой символ - это конец или начало слова.

320
11 марта 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: CilCatblack

Как определить начало и конец слова?:confused:
...
если можно пример пожалуйста:o
Нужно срочно!



Как разбить строку на слова рассматривает Страуструп

Код:
...
             vector<string> coll;
    string s = "Console Application : ostringstream1 project Overview AppWizard has created this ostringstream1 ...";
    string::size_type pos = 0,prev_pos = 0;
    while(( pos = s.find_first_of(' ',pos))
        != string::npos )
    {
        coll.push_back(s.substr(prev_pos,pos - prev_pos));
        prev_pos = ++pos;
    }
    coll.push_back(s.substr(prev_pos,pos - prev_pos));
...

А дальше как squirl сказал.
3
11 марта 2008 года
Green
4.8K / / 20.01.2000
А я бы разбил так:
 
Код:
istringstream os("Console Application : ostringstream1 project");
    while(!os.eof()) {
        string str;
        os >> str;
        cout << str << endl;
    }
1.8K
12 марта 2008 года
CilCatblack
251 / / 20.09.2007
у меня строка объявлена как динамический массив символов

char* str=new char[slen];:o

после того как введена с клавиатуры строка она записывается в массив.
После чего нужно вывести слова начинающиеся с гласной буквы. :confused:
87
12 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Совместил данные четвертого и пятого сообщения :)

Код:
#include <iostream>
#include <sstream>
using namespace std;

string strVowel = "eyuioaEYUIOA";
int slen = 256;

int main()
{
    string str;
    char* cStr = new char[slen];
    stringstream os;

    cin.getline(cStr, slen);
    os << cStr;
    while(!os.eof()) {
        os >> str;
        if(strVowel.find(str[0]) != string::npos)
            cout << str << endl;
    }
}
87
13 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: Green
А я бы разбил так:
 
Код:
istringstream os("Console Application : ostringstream1 project");
    while(!os.eof()) {
        string str;
        os >> str;
        cout << str << endl;
    }



Красивый код, но содержит скрытый баг, который заметен, если, например, в конце строки пробел:

 
Код:
istringstream os("Console Application : ostringstream1 project ");
    while(!os.eof()) {
        string str;
        os >> str;
        if(str.empty())
            str = "bag!";
        cout << str << endl;
    }

То есть в этом случае создается дополнительная пустая строка, которая также выводится.
3
13 марта 2008 года
Green
4.8K / / 20.01.2000
- Так вы за меня ещё и есть будете?
- АГА !
:D

Я предложил способ, а не конечное решение.
87
13 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: Green
Я предложил способ, а не конечное решение.



К вам претензий нет, только размышление на счет алгоритма.

Кстати, в моей доработке (сообщение 6) я эту особенность еще ухудшил, тем, что вынес определение string str за пределы блока while. В моём случае вместо пустой строки 2 раза повторится последнее слово...

10K
18 декабря 2008 года
m0zg
41 / / 11.10.2006
а то же самое на ассемблере под x86 никто не напишет? :rolleyes:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог