1 / 1 / 0
Регистрация: 14.03.2018
Сообщений: 5
1

Строки. Обработка слов

15.03.2018, 02:23. Показов 2446. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести текст. Подсчитать количество слов, имеющих букву «a».
Написал данный код и он вроде как работает, но есть подвох, ведь если в слове больше двух раз встречается введенная буква, то он их считает обе. Хелп.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h" 
#include <iostream> 
#include <string> 
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    string line;
    char c;
    cout << "Введите строку" << endl;
    getline(cin, line);
    cout << "Введите букву которую нужно найти" << endl;
    cin >> c;
    
    cout << "Количество введенных символов в строке равно" << endl;
    cout << count(line.begin(), line.end(), c) << endl;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2018, 02:23
Ответы с готовыми решениями:

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

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
мне нужна функция, которая во входе получает строку слов и рзделителей (&quot; &quot;, &quot;,&quot;, &quot;.&quot;, &quot;_&quot;, &quot;&quot;&quot;),...

Дана строка из 20 слов. Сформировать строку, составленную из последних букв всех слов исходной строки
Задача: дана строка из 20 слов (или любого другого числа). Сформировать строку, составленную из...

Обработка строк\слов. C.
Помогите разобратся, как на с реальизовать такую фишку: дано слово ( масив символов), его надо...

5
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
15.03.2018, 03:55 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <regex>
#include <iterator>
using isr = std::sregex_iterator;
 
 
int main()
{
    std::string str("a, adfa, Afg, fgh");
    std::regex reg("\\b[[:alpha:]]*?a[[:alpha:]]*?\\b");
    std::cout << std::distance(isr(str.begin(), str.end(), reg), isr()) << std::endl;
}
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
18.03.2018, 22:21 3
Sh7rk, здравствуйте! Вот еще вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    string s, word;
    cout << "Enter a string [ENG]:\n";
    getline(cin, s);
    stringstream str(s);
    int k = 0;
    while (str >> word)
    {
        if (word.find('a') != string::npos)
            k++;
    }
    cout << "Target quantity: " << k << "\n";
    system("pause");
    return 0;
}
0
7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
18.03.2018, 22:51 4
такой еще вариант есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    string str;
    getline(cin, str);
    size_t count{};
    for (int i{}; i < str.size(); ++i)
    {
        if (str[i] == 'a')
        {
            count++;
            for(; str[i] != ' ' && i < str.size(); ++i) {}
        }
    }
    cout << count << endl;
    return 0;
}
0
1 / 1 / 0
Регистрация: 14.03.2018
Сообщений: 5
21.03.2018, 22:45  [ТС] 5
Цитата Сообщение от art_h4rd Посмотреть сообщение
такой еще вариант есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    string str;
    getline(cin, str);
    size_t count{};
    for (int i{}; i < str.size(); ++i)
    {
        if (str[i] == 'a')
        {
            count++;
            for(; str[i] != ' ' && i < str.size(); ++i) {}
        }
    }
    cout << count << endl;
    return 0;
}
А можно с комментариями что значит каждая строчка, будьте добры.
0
7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
21.03.2018, 22:51 6
Цитата Сообщение от Sh7rk Посмотреть сообщение
А можно с комментариями что значит каждая строчка, будьте добры.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    string str; // объявили строку
    getline(cin, str); // ввели строку
    size_t count{}; // объявили переменную(unsigned int), инициализировали 0
    for (int i{}; i < str.size(); ++i) // идем по символам по строке до конца
    {
        if (str[i] == 'a') // если встречаем символ 'a' в слове
        {
            count++; // инкрементируем счетчик
            for(; str[i] != ' ' && i < str.size(); ++i) {} // идем на следующее слово
        }
    }
    cout << count << endl;
    return 0;
}
0
21.03.2018, 22:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2018, 22:51
Помогаю со студенческими работами здесь

Прочтение слов из txt и обработка
Ребят, нужна помощь. Нужно написать программу, которая прочтет файл А и выведет новую информацию в...

Чтение слов из файла и их обработка
Имеется типизированный файл, элементами которого являются отдельные слова. а) Найти количество...

Добавить в конец первой строки, последние n2-n1 слов второй строки
помогите пожалуйста! Даны две строки. Пусть n1 - число слов в первой строке, а n2 - во второй...

Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru