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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
diagon
Higher
1928 / 1194 / 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 адекватно вроде считываются.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 17:09     Найти количество вхождений подстрок в строку
Еще ссылки по теме:

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

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

Подсчитать количество вхождений в строку определенных символов - C++
Помогите написать программу... Данная строка символов S. Подсчитать : а ) сколько раз среди данных символов встречается символ + и...

Подсчитать количество вхождений каждого символа в строку - C++
например у Вас есть строка: asddsg В выходной файле, куда Вы запишите результаты работы программы будет: a – 1 s – 2 d – 2 g – 1

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

Определить количество вхождений подстроки в заданную строку - C++
Определить количество вхождений подстроки в заданную строку.. Добавлено через 3 часа 57 минут Вообщем сам допер. Если кому...


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

Или воспользуйтесь поиском по форуму:
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
Yandex
Объявления
02.04.2011, 17:09     Найти количество вхождений подстрок в строку
Ответ Создать тему
Опции темы

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