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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
#1

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

02.04.2011, 08:22. Просмотров 2250. Ответов 3
Метки нет (Все метки)

Собственно, в input.txt лежит строка размером до 250 символов, в output.txt нужно найти количество вхождений в нее подстрок, а именно ">>->" и "<-<<".
Вроде задача пустяковая, но разобраться не могу..
Пробовал делать strstr до тех пор, пока подстрока не перестанет встречаться(найденный фрагмент удалял), однако такой алгоритм не подошел, неверно находилось количество вхождений..
P.S. можно использовать только stdio.h и string.h
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 08:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти количество вхождений подстрок в строку (C++):

Найти количество вхождений строки S0 в строку S - C++
Даны строки S и S0. Найти количество вхождений строки S0 в строку S.

Найти количество вхождений строки S0 в строку S - C++
Введении строки S и S0. Найти количество вхождений строки S0 в строку S.

Найти количество и места вхождений подстроки в строку - C++
Всем привет, есть задача, где нужно найти количество и места вхождений подстроки в строку, но она немного не стандартна, то есть в...

Найти количество вхождений каждой буквы в заданную строку - C++
спросить у человека строку, надо посчитать количество вхождений каждой буквы и вывести статистику, например vvedi stroku: hello WORLD L -...

Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений - C++
Помогите исправить ошибку. Как вывести номера первых позиций вхождений слова мама? Подсчитать количество вхождений слова «мама» в строку...

Создать функцию, которая на вход получает строку символов, сообщает количество вхождений каждой цифры в строку... - C++
Создать функцию, которая на вход получает строку символов, сообщает количество вхождений каждой цифры в строку и в случае, если цифр 5, 6,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
02.04.2011, 11:44 #2
А как-то так?
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
#include "stdio.h"
#include "string.h"
 
#define MAX 250
int main(int argc, char* argv[])
{
FILE*f;
char buff[MAX];
char sub[MAX];
int k = 0;
f = fopen("test.txt","r");
fgets(buff,MAX,f);
printf("Substring: ");
gets_s(sub,MAX);
char*p = strstr(buff,sub);
while(p != NULL)
{
   p = strstr(p+1,sub);
   k+=1;
}
printf("%d",k);
fclose(f);
return 0;
}
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.04.2011, 16:46  [ТС] #3
Переписал под себя, k=0 стабильно...
Да и не понятен сам алгоритм.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
main(){
    freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    char a[250];
    char b[4]=">>->";
    char c[4]="<-<<";
    scanf("%s",&a);
    char*p=strstr(a,b);
    int k=0;
    while (p)  {
        p=strstr(p+1,b); k++;}
    char*t=strstr(a,c);
    while (t){
        t=strstr(t+1,c); k++; }
    printf("%i",k);
    return 0;
}
Не происходит ни одной итерации из циклов, т.е. p=strstr(a,b); равно нулю... а и b адекватно вроде считываются.
0
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
02.04.2011, 17:09 #4
Считывать лучше так
C
1
fgets(a,250,stdin);
вместо
C
1
scanf("%s",&a);
А алгоритм довольно прост, цикл идёт пока не закончатся подстроки. при нахождении подстроки, указатель передвигаем вперёд.
Вот про функцию strstr
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 17:09
Привет! Вот еще темы с ответами:

Даны строки s, s0. Найти количество вхождений строки s0 в строку s - C++
Даны строки s, s0. Найти количество вхождений строки s0 в строку s.

Количество вхождений строки S2 в строку S1 - C++
Строки S1 и S2 вводятся с клавиатуры. Определить является ли строка S2 подстрокой строки S1. Если да, то подсчитать количество вхождений...

Количество вхождений всех символов в строку - C++
Видел похожую тему, но там задача была проще, так как надо было найти конкретный символ. В моем случае строка вводится пользователем....

Как подсчитать количество вхождений подстроки в строку - C++
Добрый вечер! Как можно подсчитать количество вхождений строки S2 в строку S1? Допустим: S1= dfsgsffgsrr S2= gs


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.04.2011, 17:09
Ответ Создать тему
Опции темы

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