Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Подсчет в строке символов вводимых с клавиатуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread190543.html
одномерный массив заполнить случайными плавающими числами и отсортировать по убыванию (число элементов массива не менее 15, сортировку произвести пузырьковым методом)
C++ Указатели. Как написать эту программу через указатели??? #include <stdio.h> #include <conio.h> int main() { int a; int b; int c; int s; int n; http://www.cyberforum.ru/cpp-beginners/thread190537.html
C++ Массив целых чисел.
Дан массив целых чисел. а) Разделить все элементы массива на его первый элемент; б) увеличить все элементы массива в два раза; в) уменьшить элементы массива на число A.
Найти строчки в файле C++
Здравствуйте помогите пожалуйсто решить задачку. Дан файл, содержащий сведения об автомобилях: марка, номер и фамилия владельца. Найти фамилии владельцев и номера всех автомобилей данной марки. ...
C++ Удаление слов из строки http://www.cyberforum.ru/cpp-beginners/thread190497.html
Добрый день. Помогите пожалуйсто решить задачку. "Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами....
C++ Найти сумму четных и произведение нечетных элементов массива В массиве X(n) после каждого отрицательного элемента вставить ноль. Определить, поменялось ли местоположение минимального элемента массива. Найти сумму четных и произведение нечетных элементов... подробнее

Показать сообщение отдельно
DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
13.11.2010, 16:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int count_of_substrings(string src, string sub){
    int start = 0;
    int count = 0;
    int pos = 0;
    for(;;){
        pos = src.find(sub.c_str(),start);
        if (pos != -1){
            start = pos + sub.size();
            count++;
        } else {
            break;
        }
    }
    return count;
}
Для поиска подстрок запускаем бесконечный цикл. Это делается т.к. мы не знаем точно сколько вхождений будет. А если бы знали, то и алгоритм нам не нужен был бы.
Первым же делом ищем вхождение подстроки в строку. Результат – позиция первого символа подстроки в строке. Т. к. искать начинаем с начала строки, то значение start = 0.
Итак, если мы нашли хот одно вхождение, то увеличиваем позицию для начала старта. Приведенная мною формула экономит процессорное время, т.к. пропускает найденную подстроку, и программа в этой части поиск уже не производит.
Также мы увеличиваем значение счетчика. И всё! В конце выводим значение счетчика.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru