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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Построчное перемещение курсора в текстовом файле http://www.cyberforum.ru/cpp-beginners/thread200290.html
Кусочек кода, см. комментарии switch(flag) { case'1': { f=fopen(value, "r"); //Открываем необходимый файл if (f!= NULL) printf("File opened.\n");
C++ Ошибки при компеляции d:\msvc\mfc\lib\mafxcwd.lib(appinit.cpp) : error L2029: 'GETFILETITLE' : unresolved external d:\msvc\mfc\lib\mafxcwd.lib(doccore.cpp) : error L2029: 'GETFILETITLE' : unresolved external d:\msvc\mfc\lib\mafxcwd.lib(afxinl1.cpp) : error L2029: 'PRINTDLG' : unresolved external d:\msvc\mfc\lib\mafxcwd.lib(dlgfile.cpp) : error L2029: 'GETOPENFILENAME' : unresolved external... http://www.cyberforum.ru/cpp-beginners/thread200288.html
Мини-игра C++
Здравствуйте уважаемые гуру ООП. Нужна небольшая консультация\помощь в предложенном ниже коде. Итак суть: мне надо каким-нибудь способом записать сумму 5-ти бросков кости. Так как я в C++ полнейшее ламо, то хотелось бы узнать как сие реализовать. Мне кажется что около этой строки надо "мутить воду". В какую-нибудь новую переменную писать сумму. cout << "Player's sum is: " << (sum += sum) <<...
Используя функции CHR и ORD вывести таблицу «символ-код» для введенного диапазона кодов. C++
Используя функции CHR и ORD вывести таблицу «символ-код» для введенного диапазона кодов. Добавлено через 1 час 43 минуты uuuuppp
C++ Cтроки http://www.cyberforum.ru/cpp-beginners/thread200272.html
написал програму #include <iostream> #include <fstream> #include <conio.h> using namespace std; void main() {
C++ создание нового массива с индексами max элементов исходного массива Дан массив действительных чисел размером N. Если в исходном массиве первый элемент больше его последнего элемента, то, не изменяя состояния исходного массива создать новый массив, в который поместить номера элементов исходного массива, соответствующие порядку убывания значений его элементов. подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
29.11.2010, 21:19     Ввести длинную строку s1 и шаблон s подсчитать сколько раз входит шаблон s в строку s1
Ввести длинную строку 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru