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

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

09.06.2017, 12:48. Показов 4952. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru