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

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

Войти
Регистрация
Восстановить пароль
 
lblondy
1 / 1 / 0
Регистрация: 01.05.2011
Сообщений: 77
#1

Определить, сколько раз встречается одно слово в другом - C++

28.11.2011, 23:45. Просмотров 713. Ответов 5
Метки нет (Все метки)

может кто нибудь сталкивался, когда нужно найти количество раз, когда одно сочетание букв (например, "ха") встречается в другом сочетании ("хахахахахаха") (функция strstr в цикле не работает). помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 23:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, сколько раз встречается одно слово в другом (C++):

Определить, сколько раз слово встречается в предложении - C++
исправьте пожалуйста. #include <iostream> #include <stdio.h> using namespace std; int main() { const int max=256; char...

Определить сколько раз данное слово встречается в тексте - C++
У меня небольшая просьба 1)обьясните зачем нужен #define _CRT_SECURE_NO_DEPRECATE 2)помогите закончить код что мне нужно добавить? ...

Определить, сколько раз встречается заданное слово в предложении - C++
надо найти сколько раз встречается данное слово в предложении))) спасибо!!

Определить,сколько раз в предложении встречается заданное слово - C++
Здравствуйте. Помоги пожалуйста написать программы на си++. 1)Определить,сколько раз в предложении встречается заданное слово.

Определить сколько раз в строке встречается заданное слово - C++
Помогите пожалуйста в строках вообще ничего непонимаю! Задача:1 Определить сколько раз в строке встречается заданное слово. Задача:2 ...

Определить сколько раз встречается в тексте первое его слово - C++
Определить сколько раз встречается первое слово текста в тексте Вот код: #include "stdafx.h" #include <iostream> #include...

5
alenka-46
16 / 16 / 2
Регистрация: 28.04.2011
Сообщений: 38
29.11.2011, 00:15 #2
Если исходные слова хранятся в массивах, то можно посимвольно сравнивать. Искать в первом слове первую букву второго слова, если нашлась, то проверять остальные буквы, если слово содержится целиком, то увеличить специальную переменную. Скорее всего в такой программе будут вложенные циклы for

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(i=0; i<n; i++)
{
   for(j=0; j<m; j++)
     if(a[i+j] !=b[j])
       {
        flag=1;
        j=m;
       }
   if(flag==0)
     kolichestvo++;
 
    flag=0;    
}
Добавлено через 4 минуты
Первый цикл for проверяет все буквы длинного слова (символ '\0' проверять не надо), второй цикл for - короткого слова (символ '\0' проверять не надо). Если хотя бы одна буква не совпадёт, то переменная flag объединичивается, если же все буквы содержатся, то kolichestvo прибавляется.
1
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,777
29.11.2011, 00:30 #3
Не лучший в плане оптимизации метод, но компактненько так, и работает...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
 
size_t matches_count(const char * str, const char * wrd){
    return ( ! *str ) ? 0 : ( ! strncmp(str, wrd, strlen(wrd)) ) + matches_count(str + 1, wrd);
}
 
#define INPUT_LEN 256
#define INPUT_MASK "%255[^\n]%*c"
 
int main(void){
    char str[INPUT_LEN], wrd[INPUT_LEN];
    
    while ( printf("String: ") && scanf(INPUT_MASK, str) == 1 && printf("Word: ") && scanf(INPUT_MASK, wrd) == 1 )
        printf("%u matches.\n", matches_count(str, wrd));
    
    return 0;
}
1
lblondy
1 / 1 / 0
Регистрация: 01.05.2011
Сообщений: 77
29.11.2011, 00:37  [ТС] #4
спасибо)))
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
29.11.2011, 00:37 #5
А можно ли через find сделать?
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.11.2011, 06:14 #6
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
#include <iostream>
#include <algorithm>
using namespace std;
 
int main(void) {
   string str   = "The хахахахахаха (ха///)";
   char fnd[] = "ха";
   int cnt;
 
   // 1-вариант
   cnt = 0;
   for(string::size_type p = 0; (p = str.find(fnd, p)) != string::npos; p += strlen(fnd))
        ++cnt;
   cout << "sub1: " << cnt << endl;
 
  // 2-вариант
  cnt = 0;
  string::iterator iter = str.begin();
  while((iter = search(iter, str.end(), fnd, fnd + strlen(fnd))) != str.end()) {
        iter += strlen(fnd);
        ++cnt;
  }
  cout << "sub2: " << cnt << endl;
  return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 06:14
Привет! Вот еще темы с ответами:

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

Определить, сколько раз встречается в файле введенное пользователем слово - C++
Дан текстовый файл. Напишите программу, которая определяет, сколько раз встречается в файле введенное пользователем слово. файл:...

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

Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) - C++
Дана строка содержащая текст на русском языке. Определить, сколько раз встречается в нем самое короткое слово. Вот моя прога на...


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

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

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