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

Ввести длинную строку s1 и шаблон s подсчитать сколько раз входит шаблон s в строку s1 - C++

Восстановить пароль Регистрация
 
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
29.11.2010, 21:19     Ввести длинную строку s1 и шаблон s подсчитать сколько раз входит шаблон s в строку s1 #1
Ввести длинную строку s1 и шаблон s подсчитать сколько раз входит шаблон s в строку s1.

Вот что я написал:

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
#include<iostream>
#include<conio.h>
#include<clocale>
#include<string>
using namespace std;
 
int main(){
    setlocale(LC_ALL,"Russian");
    char s1[256];
    cout<<"Введите строку : ";
    cin.getline(s1,256); 
    char s2[128];
    cout<<"Введите шаблон: ";
    cin.getline(s2,128); 
    int number=0;
    int n=0;
    int j=strlen(s2);
    j--;
    for(int i=0;s1[i];i++)
    {
            if(s1[i]==s2[0])
            {
            for(n=0;s1[i+n]==s2[0+n],n+1<=j;n++)
            if((s1[i+n]!=s2[0+n])&&((n+1)<j))
            {
            n=j;
            number--;
            }                
            if(n==j)
            {
            number++;
            }
            }
    }
    cout<<"Количество шаблонов в сроке равно "<<number;
    getch();
}
проблема в том, что если допустим ввести privethgjkd privetfghjk,,,privet и шаблон privet
все выведет правильно, но если ввести шаблон privets и эту же строку, то покажет как при шаблоне privet

Добавлено через 13 минут
переделал сам, работает)


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<conio.h>
#include<clocale>
#include<string>
using namespace std;
 
int main(){
    setlocale(LC_ALL,"Russian");
    char s1[256];
    cout<<"Введите строку: ";
    cin.getline(s1,256); 
    char s2[128];
    cout<<"Введите шаблон: ";
    cin.getline(s2,128); 
    int number=0;
    int n=0;
    for(int i=0;s1[i];i++)
    {
            if(s1[i]==s2[0])
            {
            for(n=0;s1[i+n]==s2[0+n],n<strlen(s2);n++)
            if(s1[i+n]!=s2[0+n]&&n<strlen(s2))
            {
            n=strlen(s2);
            }                
            if(n==strlen(s2))
            {
            number++;
            }
            }
    }
    cout<<"Количество шаблонов в сроке равно "<<number;
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2010, 21:19     Ввести длинную строку s1 и шаблон s подсчитать сколько раз входит шаблон s в строку s1
Посмотрите здесь:

C++ Как в C ввести скольугодно длинную строку?
C++ Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове.
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. C++
C++ Входит ли буква в заданною строку не более двух раз
Дано натуральное число n . Определить , входит ли указанная цифра в десятичную запись n*n*n (n в кубе) и подсчитать сколько раз. C++
C++ Написать программу,которая подсчитывает сколько раз заданный символ входит в данную строку текста
C++ Подсчитать, сколько раз строка b входит в строку а
C++ Определить, сколько раз данная подстрока входит в строку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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