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

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

Восстановить пароль Регистрация
 
lblondy
 Аватар для lblondy
1 / 1 / 0
Регистрация: 01.05.2011
Сообщений: 77
28.11.2011, 23:45     сколько раз встречается одно слово в другом #1
может кто нибудь сталкивался, когда нужно найти количество раз, когда одно сочетание букв (например, "ха") встречается в другом сочетании ("хахахахахаха") (функция strstr в цикле не работает). помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 прибавляется.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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;
}
lblondy
 Аватар для lblondy
1 / 1 / 0
Регистрация: 01.05.2011
Сообщений: 77
29.11.2011, 00:37  [ТС]     сколько раз встречается одно слово в другом #4
спасибо)))
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
29.11.2011, 00:37     сколько раз встречается одно слово в другом #5
А можно ли через find сделать?
xAtom
 Аватар для xAtom
910 / 735 / 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;
}
Yandex
Объявления
29.11.2011, 06:14     сколько раз встречается одно слово в другом
Ответ Создать тему
Опции темы

Текущее время: 13:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru