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

Наиболее часто встречающееся слово - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,890
Записей в блоге: 1
27.01.2012, 08:56     Наиболее часто встречающееся слово #1
Как можно это реализовать
Исходный текст содержит строку, слова в которой разделены пробелами и знаками препинания. Найти наиболее часто встречающееся слово.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2012, 08:56     Наиболее часто встречающееся слово
Посмотрите здесь:

C++ Найти значение наиболее часто встречающееся в целочисленном массиве размера N
C++ Самое часто встречающееся слово в строке
Наиболее часто-встречаемая цифра C++
В массиве целых чисел с количеством элементов n найти наиболее встречающееся число C++
Найти слово, в котором заданный символ встречается наиболее часто C++
C++ 20 наиболее часто встречающихся слов
Найти наиболее часто встречающееся число без использования массивов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:12     Наиболее часто встречающееся слово #2
Как вариант, используйте map.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,890
Записей в блоге: 1
27.01.2012, 10:47  [ТС]     Наиболее часто встречающееся слово #3
Цитата Сообщение от go Посмотреть сообщение
Как вариант, используйте map.
а что он делает?
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:48     Наиболее часто встречающееся слово #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
а что он делает?
http://www.cplusplus.com/reference/stl/map/
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,890
Записей в блоге: 1
27.01.2012, 10:52  [ТС]     Наиболее часто встречающееся слово #5
Цитата Сообщение от go Посмотреть сообщение
а на русском есть?
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:54     Наиболее часто встречающееся слово #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
а на русском есть?
http://translate.google.ru/translate...rence/stl/map/
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.01.2012, 16:36     Наиболее часто встречающееся слово #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <sstream>
#include <map>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    std::map< std::string, int > map;
    for ( std::string word; ist >> word; ++map[word] );
    std::cout << map.begin()->first << std::endl;
}
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
28.01.2012, 02:15     Наиболее часто встречающееся слово #8
Можно использовать std::multiset + std::multiset::count.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
28.01.2012, 04:50     Наиболее часто встречающееся слово #9
В соседней теме на С есть вариант
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.01.2012, 15:40     Наиболее часто встречающееся слово #10

Не по теме:

diagon, задние точно внимательно читали, вроде как здесь немного другое



Добавлено через 3 часа 19 минут
Вариант на С++11 с использованием std::map
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
39
40
41
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
 
//---------------------------------------------------------------------
typedef std::string              T_str;
typedef std::vector<T_str>       T_vec;
typedef std::map<T_str, int>     T_map;
typedef T_map::iterator          T_map_it;
typedef std::pair<T_str, int>    T_pair;
//---------------------------------------------------------------------
 
int split_str_to_vec(const T_str , const T_str, T_vec & );
 
int main()
{
   T_str str("Hi Hello world Hello Hi, Hi Hi Hello");
   T_map set;
   T_vec v;
 
   split_str_to_vec(str, " \t\n,.-", v);
   
   std::for_each(v.begin(), v.end(), [&] (T_str str) { ++set[str]; });
   
   T_map_it it = std::max_element(set.begin(), set.end(), [] ( T_pair (a), T_pair (b)) { return a.second < b.second; });
   std::cout << (it != set.end() ? it->first : "Error" ) << std::endl;
 
   return 0;
}
 
int split_str_to_vec(const T_str s, const T_str DELIM, T_vec &v)
{
   size_t l, r;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
      v.push_back(s.substr(l, r - l));
   return v.size();
}
http://liveworkspace.org/code/5b9034...673ec6897e6389
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 21:40     Наиболее часто встречающееся слово
Еще ссылки по теме:

Наиболее часто встречаемая буква в масиве C++
C++ Работа с одномерным массивом (найти наиболее часто встречающееся число)
Вывести 10 наиболее часто встречающихся чисел C++
Наиболее часто встречающиеся слова C++
C++ В массиве целых чисел найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наим

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

Или воспользуйтесь поиском по форуму:
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
28.01.2012, 21:40     Наиболее часто встречающееся слово #11
Цитата Сообщение от diagon Посмотреть сообщение
Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <sstream>
#include <map>
int main()
{
* * * * std::string str;
* * * * std::getline(std::cin, str);
* * * * std::istringstream ist(str);
* * * * std::map< std::string, int > map;
* * * * for ( std::string word; ist >> word; ++map[word] );
* * * * std::cout << map.begin()->first << std::endl;
}
Это ахренненый хак (то есть не хак, а понимание языка Си++)... Только 12ую строку лучше заменить на
C++
1
for ( std::string word; ist >> word; map[word]-- );
ибо в задании просят найти самое (наиболее) ЧАСТО встречающееся.
А так +1.
Ед.Но:
C++
1
ist >> word;
разве возвращает false в случае ist.eof?..
Yandex
Объявления
28.01.2012, 21:40     Наиболее часто встречающееся слово
Ответ Создать тему
Опции темы

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