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

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

Войти
Регистрация
Восстановить пароль
 
MrGluck
Модератор
Эксперт CЭксперт С++
7149 / 4315 / 629
Регистрация: 29.11.2010
Сообщений: 11,730
#1

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

29.11.2010, 21:19. Просмотров 545. Ответов 0
Метки нет (Все метки)

Ввести длинную строку 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
Посмотрите здесь:

Ввести строку. Подсчитать сколько раз в последовательности символов встречается "abc" - C++
Ввести строку. Подсчитать сколько раз в последовательности символов встречается &quot;abc&quot;. Спасибо.

Определить, сколько раз данная подстрока входит в строку - C++
Вводятся подстрока и строка. Определить, сколько раз данная подстрока входит в строку. Наложение строк не учитывать, т.е. в строку aaaa...

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

Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. - C++
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. Ha Cu. Заранее...

Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. - C++
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. Заранее спасибо

Как в C ввести скольугодно длинную строку? - C++
Читаю K&amp;R, задача 1.16: Текст задачи привел на случай, если я задание не так понял. Вопрос собственно в том, как задать массив...

Входит ли буква в заданною строку не более двух раз - C++
Написать и протестировать функцию, которая определяет, входит ли буква в заданною строку не более двух раз.

Перевести длинную бинарную строку в строку с десятичными цифрами - C++
Добрый день. Проблема следующая: есть бинарное число 11010111010111111110.......11100011010110110 - необходимо его представить в виде...

Ввести строку произвольной длины. Распечатать середину 15 раз. - C++
Доброго времени суток! Пожалуйста, подскажите решение: Ввести строку произвольной длины. Распечатать середину 15 раз. Заранее...

Ввести строку и подсчитать сумму всех букв в строке - C++
1. Пользователь вводит строку, выбирает символ и эти символы становятся большими 2.Ввести строку и подсчитать сумму всех букв в строке...


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

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

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