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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
#1

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

27.01.2012, 08:56. Просмотров 2413. Ответов 10
Метки нет (Все метки)

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

Найти число, наиболее часто встречающееся в этом массиве - C++
Знаю, что таких тем здесь много, но таким способом нету :( , помогите исправить ошибку, вывод не выводит на экран ответ, начало работает...

Найти значение наиболее часто встречающееся в целочисленном массиве размера N - C++
Люди добрые ПОМОГИТЕ ПОЖАЛУЙСТА решить задачу - ЗАВТРА СДАВАТЬ !!!! Условие: Задан Целочисленный массив размера N. Найти значение...

Найти наиболее часто встречающееся число без использования массивов - C++
Дана задача: В массиве целых чисел с количеством элементов n найти наиболее часто встречающееся число. Если таких чисел несколько, то...

Работа с одномерным массивом (найти наиболее часто встречающееся число) - C++
Дан одномерный массив A, найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.

Самое часто встречающееся слово в строке - C++
Как вывести на экран самое часто встречающееся слово в строке (которое встречается в строке чаще других)? Помогите, пожалуйста.

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

10
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:12 #2
Как вариант, используйте map.
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
27.01.2012, 10:47  [ТС] #3
Цитата Сообщение от go Посмотреть сообщение
Как вариант, используйте map.
а что он делает?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:48 #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
а что он делает?
http://www.cplusplus.com/reference/stl/map/
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
27.01.2012, 10:52  [ТС] #5
Цитата Сообщение от go Посмотреть сообщение
а на русском есть?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.01.2012, 10:54 #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
а на русском есть?
http://translate.google.ru/translate...rence/stl/map/
0
diagon
Higher
1930 / 1196 / 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;
}
1
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.01.2012, 02:15 #8
Можно использовать std::multiset + std::multiset::count.
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
28.01.2012, 04:50 #9
В соседней теме на С есть вариант
0
go
Эксперт С++
3586 / 1366 / 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/5b9034af757f457758673ec6897e6389
0
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
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?..
0
28.01.2012, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 21:40
Привет! Вот еще темы с ответами:

Найти слово, в котором заданный символ встречается наиболее часто - C++
Помогите с задачей. Дан текст. Найти в нём слова, в которых некоторый заданный символ встречается наибольшее число раз.

В массиве целых чисел с количеством элементов n найти наиболее встречающееся число - C++
1.В массиве целых чисел с количеством элементов n найти наиболее встречающееся число. Если таких чисел несколько, то определить наименьшее...

Наиболее часто-встречаемая цифра - C++
Помогите пожалуйста написать программу, которая выводит на экран наиболее часто-встречаемую цифру, в введенном с клавиатуры тексте. Заранее...

20 наиболее часто встречающихся слов - C++
дан файл. выписать 20 наиболее часто встречающихся слов в алфавитном порядке. (структуры использовать нельзя). помогите пожалуйста. заранее...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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