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

Как подсчитать количество вхождений подстроки в строку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Количество слов и цифр в строке, и последовательность http://www.cyberforum.ru/cpp-beginners/thread229784.html
Помогите, осталось решить всего 2 задачи из 10 заданных)) :) Нужно дописать решение, но чтобы его принимал компилятор BORLANDC, потому что сдаем пока только на нём. В первой задание: Сколько слов и цифр в строке? Написал, как найти количество слов, но как вычислите количество цифр? //254(3).cpp #include <stdio.h> #include <conio.h> enum {OUT, IN};
C++ Составить фрагмент программы С коментприями, если можна!!! http://www.cyberforum.ru/cpp-beginners/thread229760.html
C++ Составить программу
С коментприями
C++ Составить фрагмент программы
С коментприями, если можна
C++ Составить фрагмент программы!!! http://www.cyberforum.ru/cpp-beginners/thread229752.html
С коментприями
C++ Составить фрагмент программы С коментприями, если не трудно подробнее

Показать сообщение отдельно
Rooney
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 37
17.01.2011, 18:40  [ТС]     Как подсчитать количество вхождений подстроки в строку
Попытался переделать...

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 <windows.h>
#include <fstream>
 
using namespace std;
 
int main()
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        const int S = 256; 
        char a[S] = "";
        char b[S] = "";
        int k = 0,cnt = 0;
        cout << "Ââåäèòå ñòðîêó 1:"<< endl;
        cin.getline(a,S);
        cout << "ÑòðîêГ*: [" << a << "] \n";
        cout << "Ââåäèòå ñòðîêó 2:"<< endl;
        cin.getline(b,S);
        int const la = strlen(a);
        int const lb = strlen(b);
        cout << "ÑòðîêГ*: [" << b << "] \n";
        for(int i =0 ; i < la; i++){
                char tmp[S] = "";
                k=0;
                if(a[i] == b[0]){
                    for(int j=i; j<=lb ;j++){
                        tmp[k] = a[j];
                        k++;
                    }
                    if(strcmp(b,tmp))cnt++;
                }
        }    
        cout << "Êîëè÷åñòâî âõîæäåГ*ГЁГ©: " << cnt << endl;
        system ("pause"); 
        return 0;
}
Проблема в том что,
прога не отличает строку "привет" от "привед"... засчитывает как вхождение...

Добавлено через 5 часов 15 минут
Нашёл решение самостоятельно:

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
38
#include <iostream>
#include <windows.h>
#include <fstream>
#include <cstring>
using namespace std;
 
int main()
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        const int S = 256; 
        char a[S] = "";
        char b[S] = "";
        int k = 0,cnt = 0;
        cout << "Введите строку 1:"<< endl;
        cin.getline(a,S);
        cout << "Строка: [" << a << "] \n";
        cout << "Введите строку 2:"<< endl;
        cin.getline(b,S);
        int const la = strlen(a);
        int const lb = strlen(b);
        cout << "Строка: [" << b << "] \n";
        for(int i =0 ; i < la; i++){
                char tmp[S] = "";
                k=0;
                if(a[i] == b[0]){
                    int j = i;
                    while(a[j] == b[k]){
                        tmp[k] = a[j];
                        j++; k++;
                    }
                    if(!(strcmp(b,tmp)))cnt++;
                }
        }    
        cout << "Количество вхождений: " << cnt << endl;
        system ("pause"); 
        return 0;
}
 
Текущее время: 06:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru