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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Killer80lv
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 14
24.01.2013, 19:16     Определить, сколько раз заданное сочетание символов встречается в строке #1
Дана строка. Определить, сколько раз заданное сочетание символов встречается в строке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 19:16     Определить, сколько раз заданное сочетание символов встречается в строке
Посмотрите здесь:

C++ Определить сколько раз в строке встречается заданное слово
Определить сколько раз встречается в строке самое длинное слово C++
Определить сколько раз в строке встречается заданное число C++
Сколько раз в тексте встречается удвоенное сочетание «нн» C++
Определить длину строки и сколько раз встречается символ в строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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;
}
Amaziinq
 Аватар для 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 текст.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11847 / 6826 / 771
Регистрация: 27.09.2012
Сообщений: 16,929
Записей в блоге: 2
Завершенные тесты: 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;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.01.2013, 20:20     Определить, сколько раз заданное сочетание символов встречается в строке #5
Цитата Сообщение от Amaziinq Посмотреть сообщение
MrGluck указал нам на верный вариант решения данной задачи
ну ка, обоснуйте
Amaziinq
 Аватар для Amaziinq
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
24.01.2013, 20:23     Определить, сколько раз заданное сочетание символов встречается в строке #6
Цитата Сообщение от MrGluck Посмотреть сообщение
ну ка, обоснуйте
Что, простите, обосновать?
То, что ваш код прост, лаконичен и выполняет поставленую задачу?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.01.2013, 20:25     Определить, сколько раз заданное сочетание символов встречается в строке #7
Amaziinq, прошу прощения, я, слепец, прочел не так не верный вариант
Amaziinq
 Аватар для Amaziinq
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
24.01.2013, 20:31     Определить, сколько раз заданное сочетание символов встречается в строке #8
MrGluck, вы, друг мой, сумели открыть остальным глаза .
Айда ещё чего решим.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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;
}
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 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);
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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, необходимо было определить число подстрок(сочетаний символов), а не токенов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 21:04     Определить, сколько раз заданное сочетание символов встречается в строке
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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;
}
Yandex
Объявления
24.01.2013, 21:04     Определить, сколько раз заданное сочетание символов встречается в строке
Ответ Создать тему
Опции темы

Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru