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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Killer80lv
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 14
#1

Определить, сколько раз заданное сочетание символов встречается в строке - C++

24.01.2013, 19:16. Просмотров 2738. Ответов 11
Метки нет (Все метки)

Дана строка. Определить, сколько раз заданное сочетание символов встречается в строке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 19:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, сколько раз заданное сочетание символов встречается в строке (C++):

Определить сколько раз в строке встречается заданное слово - C++
Помогите пожалуйста в строках вообще ничего непонимаю! Задача:1 Определить сколько раз в строке встречается заданное слово. Задача:2 ...

Определить сколько раз в строке встречается заданное число - C++
Определить сколько раз в строке встречается заданное число.

Сколько раз заданное слово встречается в заданной строке - C++
Не знаю решения в консоли

Определить,сколько раз в предложении встречается заданное слово - C++
Здравствуйте. Помоги пожалуйста написать программы на си++. 1)Определить,сколько раз в предложении встречается заданное слово.

Определить, сколько раз встречается заданное слово в предложении - C++
надо найти сколько раз встречается данное слово в предложении))) спасибо!!

Функция: определить, сколько раз заданное число встречается в массиве - C++
Помогите, пожалуйста. Написать программу с функцией, которая определяет, сколько раз заданное число встречается в массиве.

11
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
24.01.2013, 19:24 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str = "Hey , banana , I am banana , I am banana", str2;
    std::cin >> str2;
    std::istringstream ist(str);
    std::cout << std::count(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(), str2) << std::endl;
}
1
Amaziinq
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
24.01.2013, 20:02 #3
MrGluck указал нам на верный вариант решения данной задачи, а вот мой - видимо, не совсем рациональный (совсем не рациональный), но рабочий код с использованием C-string.
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    char a[]={"Hey , banana , I am banana , I am banana"};
    char b[]={"banana"};
    int count(0);
    for (int i = 0 ; i <= strlen(a) ; i++)
    {
        if (a[i]==b[0])
        {
            if (a[i+1]==b[1])
            {
                if (a[i+2]==b[2])
                {
                    if (a[i+3]==b[3])
                    {
                        count++;
                    }
                }
            }
        }
    }
 
cout<<count<<endl;
return 0;
}
Позаимствовал у MrGluck текст.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
24.01.2013, 20:19 #4
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main(){
    char str1[]="Hey , banana , I am banana , I am banana";
    char str2[]="banana";
    char * p=strstr(str1,str2);
    size_t count=0;
    while(p){
        ++count;
        p=strstr(p+1,str2);
    }
    std::cout<<count<<std::endl;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
24.01.2013, 20:20 #5
Цитата Сообщение от Amaziinq Посмотреть сообщение
MrGluck указал нам на верный вариант решения данной задачи
ну ка, обоснуйте
0
Amaziinq
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
24.01.2013, 20:23 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
ну ка, обоснуйте
Что, простите, обосновать?
То, что ваш код прост, лаконичен и выполняет поставленую задачу?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
24.01.2013, 20:25 #7
Amaziinq, прошу прощения, я, слепец, прочел не так не верный вариант
1
Amaziinq
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
24.01.2013, 20:31 #8
MrGluck, вы, друг мой, сумели открыть остальным глаза .
Айда ещё чего решим.
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.01.2013, 20:36 #9
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
#include <iostream>
#include <cstring>
 
int main() {
 
    char str[256];
    std::cout << "string: ";
    std::cin.getline(str, sizeof(str));
    
    char substr[256];
    std::cout << "substring: ";
    std::cin.getline(substr, sizeof(substr));
    
    size_t substrLen = std::strlen(substr);
    size_t substrCount = 0;
    
    char* pstr = std::strstr(str, substr);
        
    while(pstr != NULL) {
                
        ++substrCount;
        pstr = std::strstr(pstr + substrLen, substr);
    }        
    
    std::cout << "count: " << substrCount << std::endl;
}
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
24.01.2013, 20:38 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char str[] = "123aba2aba4abaaba";
char ptr[] = "aba";
int count = 0;
 
int sizeP = 0; 
while(ptr[sizeP]!='\0'){ ++sizeP; }
 
for(int i = 0, j = 0; str[i]!='\0'; i++){
    if( str[i] == ptr[j] ){ j++; };
    if(j == sizeP ){ j = 0; count++; }
    };
    
    printf("%d ", count);
}
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.01.2013, 20:55 #11
Amaziinq, у вас происходит выход за пределы массива
C++
1
2
3
4
5
6
7
#include <cassert>
// ...
for (int i = 0 ; i <= strlen(a); i++)
{
    assert(i + 3 < strlen(a));
    // ...
}
MrGluck, необходимо было определить число подстрок(сочетаний символов), а не токенов.
1
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
24.01.2013, 21:04 #12
то то мне на душе неспокойно)
Вот, исправленный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main()
{
    std::string str = "Hey, banana, I am banana, I am banana!", str2;
    std::cin >> str2;
    std::size_t pos = -1, counter = 0;
    while((pos = str.find(str2, pos+1)) != std::string::npos)
        counter++;
    std::cout << counter << std::endl;
}
0
24.01.2013, 21:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 21:04
Привет! Вот еще темы с ответами:

Сколько раз встречается неразрывный набор символов в строке - C++
Всем привет ! У меня есть программа, которая определяет, есть ли неразрывный набор символов в строке или нет. Подскажите, пожалуйста, что...

Сколько раз в тексте встречается удвоенное сочетание «нн» - C++
Вот что пока получилось... #include &lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int main () { char c; ...

Определить длину строки и сколько раз встречается символ в строке - C++
Пусть дано строку и некий символ. Необходимо определить длину строки, сколько раз встречается данный символ в строке, вывести строку,...

Определить сколько раз встречается в строке самое длинное слово - C++
дана строка, содержащий текст на русском языке. Определить сколько раз встречается в ней самое длинное слово.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru