Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Марс313
0 / 0 / 0
Регистрация: 23.12.2018
Сообщений: 55

Подсчитать сколько раз в строке встречается заданный символ

18.03.2019, 21:28. Показов 2328. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача №2. В заданной строке подсчитать, сколько раз встречается символ " * " и сколько раз символ " + ". Указать смещение каждого вхождения относительно предыдущего вхождения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2019, 21:28
Ответы с готовыми решениями:

Строка: В заданной строке подсчитать, сколько раз встречается символ “*” и сколько раз символ ”+”.
Помогите описать данную программу так же как на скриншоте Условие:В заданной строке подсчитать, сколько раз встречается символ “*” и...

Подсчитать, сколько раз встречается в последнем слове заданный символ
Мне нужно ввести любой текст и в последнем слове, этого текста, найти сколько раз встречается символ, который тоже надо ввести. Я пробовал,...

Подсчитать сколько раз заданный символ встречается в слове с заданным номером
Программа работает, но выдает ноль в любом случае Задача: Задана некоторая запись, состоящая из слов, разделенных пробелом. В конце...

4
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.03.2019, 22:49
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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
void count(const string& s, vector<size_t>& v, char ch) {
    typedef string::const_iterator iter;
    iter first = s.cbegin();
    while (true) {
        iter second = find(first, s.cend(), ch);
        if (second == s.cend()) break;
        v.push_back(second - first + 1);
        first = second + 1;
    }
}
int main()
{
    vector<size_t> mul;
    vector<size_t> plus;
    string s;
    getline(cin, s);
    count(s, mul, '*');
    count(s, plus, '+');
 
    cout << "* " << mul.size() << ':';
    copy(mul.cbegin(), mul.cend(), ostream_iterator<size_t>(cout, " "));
    cout << endl;
 
    cout << "+ " << plus.size() << ':';
    copy(plus.cbegin(), plus.cend(), ostream_iterator<size_t>(cout, " "));
}
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
19.03.2019, 00:40
Цитата Сообщение от zayats80888 Посмотреть сообщение
first = second + 1
C++
1
first = std::next(second);
1
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
19.03.2019, 01:02
Кстати, для подсчета количества символов удобно использовать такую конструкцию:
C++
1
2
3
4
5
string str;
getline(cin, str);
 
map<char, int> count;
for (auto c : str) count[c]++;
2
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
19.03.2019, 02:15
zayats80888, итераторам не нужны промежуточные хранилища, правда кода больше (да и я 100 лет итераторы на плюсах не писал). Идея понятна, а вот реализовать можно лучше.

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
#include <bits/stdc++.h>
 
class counter
{
public:
    class char_iterator : public std::iterator<std::input_iterator_tag, 
                                        int,
                                        int,
                                        const int *,
                                        int> {
    public:
        explicit 
        char_iterator(const std::string::const_iterator &begin, const std::string::const_iterator &end, const char target=0) 
            : prev{begin}, next{begin}, end{end}, target{target} { }
        char_iterator& operator++() { prev = next; next = std::find(std::next(next), end, target); return *this; }
        char_iterator operator++(int) { char_iterator ret = *this; ++(*this); return ret; }
        bool operator==(char_iterator other) const { return next == other.next; }
        bool operator!=(char_iterator other) const { return !(*this == other); }
        reference operator*() { return next - prev; }
    private:
        std::string::const_iterator prev, next;
        const std::string::const_iterator end;
        const char target;
    };
    counter(const std::string &str) : str{str} { }
    char_iterator begin(const char target) const { return ++char_iterator(str.cbegin(), str.cend(), target); }
    char_iterator end() const { return char_iterator(str.cend(), str.cend()); }
private:
    const std::string &str;
};
 
int main()
{
    std::string line;
    std::getline(std::cin, line);
    counter c{line};
    line.clear();
 
    std::cout << "[*] " << std::count(line.cbegin(), line.cend(), '*') << ": ";
    std::copy(c.begin('*'), c.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    std::cout << "[+] " << std::count(line.cbegin(), line.cend(), '+') << ": ";
    std::copy(c.begin('+'), c.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2019, 02:15
Помогаю со студенческими работами здесь

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

В заданной строке подсчитать сколько раз встречается символ "*" и сколько раз символ "+"
Итак, сама задача: В заданной строке подсчитать сколько раз встречается символ &quot;*&quot; и сколько раз символ &quot;+&quot;. Указать...

Определить, сколько раз в последовательности встречается заданный символ
Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASCII) Задание: Написать программу, ...

Файлы: проверить, сколько раз в файле встречается заданный символ
программа считывает из файла 100 символов и проверяет сколько раз в файле встречается определенный символ(пользователь вводит) не знаю с...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru