Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7

Подсчет слов в строке, начинающихся с гласных / согласных букв

09.06.2017, 12:48. Показов 4928. Ответов 10
Метки нет (Все метки)

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

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

Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2017, 12:48
Ответы с готовыми решениями:

Подсчет количества слов начинающихся с гласных, согласных, иных букв
Начал изучать С++ и после очередной пройденной главы пытаюсь выполнить упражнение: напишите прогу, которая читает слова по одному за раз,...

Подсчет гласных и согласных букв в строке
Помогите пожалуйста. Нужно написать полностью программу(если не усложнит сильно дело, написать к каждому важному рядку объяснение): ...

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

10
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
09.06.2017, 13:37
SteelNuttiez, здравствуйте! Вот вариант для гласных букв, чтобы вы поняли, как это можно сделать. Если нужно что-то еще, пишите.

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
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
    const int N = 12;
    char vowel[N] = { 'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'Y', 'y' };
    string s, word;
    int k;
    cout << "Введите строку из слов (латинские буквы):" << endl;
    getline(cin, s);
    stringstream str(s);
    k = 0;
    while (str >> word)
    {
        for (int i = 0; i < N; i++)
        {
            if (word[0] == vowel[i])
                k++;
        }
    }
    if (k)
        cout << "Количество искомых слов: " << k << endl;
    else
        cout << "Искомых слов не найдено!" << endl;
    cin.get();
    return 0;
}
1
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7
09.06.2017, 14:04  [ТС]
Спасибо! Немного непонятно с использованием stringstream - дело в том, что я последовательно иду по учебнику С. Прата и до потоков пока не дошел
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.06.2017, 14:42
SteelNuttiez,
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    string sentence_example = "Он ответил старику что не хочет вести с ним никаких дел.";
 
    int total_words = 0;
    int consonants = 0;     // переменная, представляющая количество согласных букв
    int vowels = 0;         // переменная, представляющая количество гласных букв
    
 
    for (int i = 0; i < sentence_example.size(); i++)
    {
        switch (sentence_example[i]) // проводи анализ предложения
        {
        case 'А': case 'а': case 'О': case 'о': case 'И': case 'и': case 'Е': case 'е': case 'Ё': case 'ё':
        case 'Э': case 'э': case 'Ы': case 'ы': case 'У': case 'у': case 'Ю': case 'ю': case 'Я': case 'я':
        {   
            vowels++;
            break;
        }
        case 'Б': case 'б': case 'В': case 'в': case 'Г': case 'г': case 'Д': case 'д': case 'Ж': case 'ж': case 'З':
        case 'з': case 'Й': case 'й': case 'К': case 'к': case 'Л': case 'л': case 'М': case 'м': case 'Н': case 'н':
        case 'П': case 'п': case 'Р': case 'р': case 'С': case 'с': case 'Т': case 'т': case 'Ф': case 'ф':
        case 'Х': case 'х': case 'Ц': case 'ц': case 'Ч': case 'ч': case 'Ш': case 'ш': case 'Щ': case 'щ':
        {
            consonants++;
            break;
        }       
        }
        
        while (sentence_example[i] != ' ') // перескакивает на следующее слово
        {
            if (sentence_example[i] == '.') break; // если в составе слова найдена точка, то осуществляется вывод результатов
            i += 1; 
        }
        total_words++;
    }
    cout << "Всего слов: " << total_words << '.' << endl;
    cout << "Слов, начинающихся с согласных: " << consonants << '.' << endl;
    cout << "Слов, начинающихся с гласных: " << vowels << '.' << endl;
 
    system("pause");
    return 0;
}
Добавлено через 7 минут
SteelNuttiez, Вот также вариант в котором происходит проверка числовых выражений:
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
51
52
53
54
55
56
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    string sentence_example = "Он ответил старику что не хочет вести с ним никаких дел 15 мая.";
 
    int total_words = 0;
    int consonants = 0;     // переменная, представляющая количество согласных букв
    int vowels = 0;         // переменная, представляющая количество гласных букв
    int numbers = 0;        // переменная, представляющая количество численных выражений
 
    for (int i = 0; i < sentence_example.size(); i++)
    {
        switch (sentence_example[i]) // проводи анализ предложения
        {
        case 'А': case 'а': case 'О': case 'о': case 'И': case 'и': case 'Е': case 'е': case 'Ё': case 'ё':
        case 'Э': case 'э': case 'Ы': case 'ы': case 'У': case 'у': case 'Ю': case 'ю': case 'Я': case 'я':
        {   
            vowels++;
            break;
        }
        case 'Б': case 'б': case 'В': case 'в': case 'Г': case 'г': case 'Д': case 'д': case 'Ж': case 'ж': case 'З':
        case 'з': case 'Й': case 'й': case 'К': case 'к': case 'Л': case 'л': case 'М': case 'м': case 'Н': case 'н':
        case 'П': case 'п': case 'Р': case 'р': case 'С': case 'с': case 'Т': case 'т': case 'Ф': case 'ф':
        case 'Х': case 'х': case 'Ц': case 'ц': case 'Ч': case 'ч': case 'Ш': case 'ш': case 'Щ': case 'щ':
        {
            consonants++;
            break;
        }       
        case '1': case '2': case '3': case '4': case '5':
        case '6': case '7': case '8': case '9': case '0':
        {
            numbers++;
        }
        }
        
 
 
        while (sentence_example[i] != ' ') // перескакивает на следующее слово
        {
            if (sentence_example[i] == '.') break; // если в составе слова найдена точка, то осуществляется вывод результатов
            i += 1; 
        }
        total_words++;
    }
    cout << "Всего слов: " << total_words << '.' << endl;
    cout << "Слов, начинающихся с согласных: " << consonants << '.' << endl;
    cout << "Слов, начинающихся с гласных: " << vowels << '.' << endl;
    cout << "Числовых выражений: " << numbers << '.' << endl;
 
    system("pause");
    return 0;
}
1
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7
09.06.2017, 14:44  [ТС]
mskoromets, большое спасибо! Я как новичок, стормозил с циклом перехода на другое слово.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
09.06.2017, 17:16
Цитата Сообщение от SteelNuttiez Посмотреть сообщение
Спасибо! Немного непонятно с использованием stringstream - дело в том, что я последовательно иду по учебнику С. Прата и до потоков пока не дошел
Я вас понимаю. Тоже когда-то только начинал учится, да и не так давно это было. Вот еще один код (можно сказать обработка строки вручную). Кстати, разбиение строки на слова - очень распространенная задача при обработке строк. Можно даже обойтись использованием одного лишь указателя.

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
#include <iostream>
#include <string>
#include <windows.h> //Шрифт консоли - Lucida Console
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int N = 12;
    char vowel[N] = { 'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'Y', 'y' };
    string s, word;
    int k = 0;
    cout << "Введите строку из слов (латинские буквы):" << endl;
    getline(cin, s);
    s = s + ' '; //Прибавляем к строке пробел (для копирования последнего слова)
    for (int i = 0; s[i]; i++)
    {
        word += s[i]; //Накапливаем слова в строковой переменной
        if (s[i] == ' ') //Условие копирования слова из строки (может быть другим)
        {
            word.pop_back(); //Удаляем пробел в конце каждого слова
            if (word != "")
            {
                for (int i = 0; i < N; i++)
                {
                    if (word[0] == vowel[i])
                        k++;
                }
            }
            word = ""; //Обнуляем переменную для следующего слова
        }
    }
    if (k)
        cout << "Количество искомых слов: " << k << endl;
    else
        cout << "Искомых слов не найдено!" << endl;
    system("pause");
    return 0;
}
1
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7
16.06.2017, 23:03  [ТС]
Fixer_84, да, про указатель я также вспомнил, как вариант.

Спасибо!
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
16.06.2017, 23:18
SteelNuttiez, при изучении C++, какую вы книгу берете за основу?
0
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7
16.06.2017, 23:20  [ТС]
mskoromets, Стивен Прата, 6-е издание. У него, на мой взгляд, все достаточно структурно и понятно - для самообучения в домашних условиях, так сказать )
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
16.06.2017, 23:22
SteelNuttiez, а много ли там дается практических заданий?
0
1 / 1 / 1
Регистрация: 13.04.2017
Сообщений: 7
16.06.2017, 23:25  [ТС]
mskoromets, в конце каждой главы примерно 10 легких/теоретических упражнений + 10 задач по программированию.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2017, 23:25
Помогаю со студенческими работами здесь

Подсчет гласных и согласных букв
Здравствуйте уважаемые программисты. Задача состоит в том чтобы под считать гласные и согласные буквы. #include &lt;iostream&gt; ...

Подсчет числа согласных и гласных букв
Дан текстовый файл с него считывается информация, необходимо посчитать сколько согласных и гласных букв. Помогите пожалуйста написать,...

Посчитать количество гласных букв, согласных букв, цифр и знаков препинания в строке
С клавиатуры введена строка на кирилице. Посчитать количество гласных букв, согласных букв, цифр и знаков препинания в строке. Если...

Подсчёт слов начинающихся с гласных, соглассных, цифр, или прочего
Помогите начинающему. В 6 лаве 7 задача (Прата С - Язык программирования C++), не могу допетрить, как в цикле указать условие на проверку...

Определить количество слов, начинающихся с гласных букв
2. Дана строка символов. Определить количество слов, начинающихся с гласных букв. Вывести на экран эти слова. Пожалуйста, решите.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru