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

Найти ключевые слова в тексте - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Z-buffer http://www.cyberforum.ru/cpp-beginners/thread864031.html
Приветствую. Требуется любой пример реализации программы, использующей для отрисовки объекта (любого, самого простого) Z-буфер. Сколько не пытаюсь, в интернете ничего подобного не обнаружил, а без примера разобраться с сим явлением пока что не выходит. Принцип ясен, а с реализацией тупик. Среда Microsoft Visual C++.
C++ Поиск вершины в дереве Никак не могу понять как вставить этот алгоритма в программу, что приписать чтобы заработало. В особенности не понятно node** Tree куда что указывает. Объясните пожалуйста Функция возвращает указатель на вершину, содержащую ключ k. node Poisk_1 (int k, node** Tree) // Поиск вершины с ключом k в дереве (рекурсивный алгоритм). // *Tree - указатель на вершину дерева. { if (*Tree==NULL)... http://www.cyberforum.ru/cpp-beginners/thread864029.html
C++ Преобразование типов
Как преобразовать массив char message в строку char *strmessage ?????
списки (найти ошибку в коде) C++
что не так? #include "stdafx.h" #include <iostream> #include <conio.h> #define st struct st #define list struct spis list { int info;
C++ Подсчитать количество нулевых элементов в матрице и вывести их индексы http://www.cyberforum.ru/cpp-beginners/thread864012.html
дан массив A целых чисел. вывести этот массив на экран, подсчитать количество нулевых элементов и вывести их индексы.
C++ Массивы. Найти среднее количество элементов этой таблицы больше за среднее арифметическое всех ее элементов Дана цело числовая таблица. Найти среднее количество элементов этой таблицы больше за среднее арифметическое всех ее элементов. подробнее

Показать сообщение отдельно
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133

Найти ключевые слова в тексте - C++

14.05.2013, 08:59. Просмотров 915. Ответов 3
Метки (Все метки)

Задача: дан файл с произвольным текстом. Найти первые 10 ключевых слов (т.е. таких, которые чаще всего встречаются).
Код, приведенный ниже, работает корректно.
Посоветуйте, что подправить/оптимизировать/улучшить.
Как данную задачу решили бы вы?
Листинг
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <fstream>
#include <algorithm>
#include <map>
using namespace std;
 
bool filter (char c)
{
    return c == '.' || c == ','  || c == ':'  ||
           c == ';' || c == '-'  || c == '_'  ||
           c == '!' || c == '?'  || c == '\"' ||
           c == '(' || c == ')'  || c == '/'  ||
           c == '$' || c == '\\' || c == '%';
}
 
int main()
{
    ifstream infile  ("text.txt");
    string s;
    std::map<string, int>::iterator it;
    std::map<int, string>::reverse_iterator rit;
    std::map<string, int> dictionary;
    std::multimap<int, string> resultDictionary;
 
    while (infile >> s)
    {
        // Remove chars (.,-, etc)
        s.resize (remove_if(s.begin(), s.end(), filter) - s.begin());
 
        if (!s.empty() && s.length() > 3)
        {
            if (dictionary.find(s) != dictionary.end())
            {
                // Increment counter of words
                dictionary.at(s)++;
            }
 
            // Insert word in the map
            else
            {
                dictionary.insert (pair<string,int>(s, 1));
            }
        }
    }
 
    for (it = dictionary.begin(); it != dictionary.end(); ++it)
    {
        resultDictionary.insert(pair<int, string> (it->second, it->first));
    }
 
    int i;
 
    cout << "Top 10 keywords of the text:" << endl;
 
    for (rit = resultDictionary.rbegin(), i = 1;
         rit != resultDictionary.rend(), i < 11;
         rit++, i++)
    {
        cout << rit->second << " => " << rit->first << endl;
    }
 
    return 0;
}


Добавлено через 10 часов 40 минут
Актуально
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru