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

как создать частотный словарь на кириллице, который считывает корни слов? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шаблонный класс бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread605895.html
всем привет, возник такой вопрос вот есть шаблонный класс бинарного дерева поиска, задается тип ключа и тип данных. есть метод, который по идее ищет узел с заданным ключом, и возвращает данные. но вот в чем проблема, если узел с такими данными не найдет, то что возвращать, если тип данных в дереве задается пользователем? вот - typeData find(typeKey key) const; // найти нужную информацию в...
C++ Найти максимум среди сумм элементов диагоналей Для заданной целочисленной матрицы nXn (где n - константа) найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. Ребят, помогите пожалуйста!!! Моя программа ищет максимум только среди диагоналей, которые выше главной диагонали. Как изменить программу чтобы находил максимум среди сумм диагоналей, которые ниже главной и выше? #include <stdio.h> #include... http://www.cyberforum.ru/cpp-beginners/thread605875.html
C++ переопределение
Необходимо реализовать класс Stack, соответствующий стеку чисел. Для хранения стека внутри класса используется массив. Размер массива передается в качестве аргумента конструктора. Конструктор должен создать массив требуемого размера (этот массив должен удаляться деструктором) . Необходимо переопределить оператор '+=' (в качестве правого операнда выступает число) для добавления нового элемента в...
Блок-схема для части программмы C++
Вот вся программа http://pastebin.com/ii0n08BE. Вроде рабочая;) Мне нужно для void poisk 2 составить блок-схему. http://pastebin.com/ygFKyPgH - вот сам void poisk 2.
C++ Интерполяционный поиск http://www.cyberforum.ru/cpp-beginners/thread605813.html
Напишите плиз реализацию данного поискать. Сорри если что за повтор темы
C++ Определите, есть ли в данной строке указанное слово(код написан) подскажите, что не хватает в программе? очень надо, исправьте кому несложно. #include <iostream> #include <algorithm> #include <string> int main() { std::string s = "Определите есть ли в данной строке указанное слово."; подробнее

Показать сообщение отдельно
Zhanik
0 / 0 / 0
Регистрация: 14.06.2012
Сообщений: 12

как создать частотный словарь на кириллице, который считывает корни слов? - C++

14.06.2012, 21:12. Просмотров 650. Ответов 0
Метки (Все метки)

Помогите плс! Я смог создать словарь, но он не считывает корни, а слово целиком. И если в тексте встречаются числа то выводится ошибка
Есть база корней и суффиксов.
Вот мой код:
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <map>
 
using namespace std;
string toFormat(string);
map<string, int> dic;
int main()
{
 
ifstream db("data_base.txt");
 
string temp;
int cnt;
while (db >> temp >> cnt) {
temp = toFormat(temp);
dic[temp] = cnt;
}
db.close();
string text;
 
map<string, int>::iterator it;
 
ifstream in ("input.txt");
for(int i=0; i<3; i++)
{
char temp;
in >> temp;
}
while (in >> text){
text = toFormat(text);
 
dic[text]++;
 
 
}
in.close();
ofstream out("data_base.txt");
for (it = dic.begin(); it!=dic.end(); it++)
{
out <<(*it).first <<" " <<(*it).second <<endl;
return 0;
}
}
string toFormat(string w){  
    string word = "";
    for (int i = 0; i < w.length(); i++)
    {
        if ((int)w[i] > 0)
            continue;
        else
            word += w[i];
    }
 
    for (int i = 0;i < word.length() - 1; i+=2)
    {
        
        // ? ? ? ? ? ? ? ?
        if (((int)word[i] == -45 || (int)word[i] == -46) && ((int)word[i+1] % 2 == 0))
            word[i+1] = word[i+1] + 1;
        
        // А Б В Г Д Е Ж З И Й К Л М Н О П
        if (((int)word[i] == -48) && ((int)word[i+1] >= -112 && (int)word[i+1] <= -97))
            word[i+1] = word[i+1] + 32;
 
        //  Ф Х Ц Ш Щ Ч Ь Ъ Э Ю Я Р С Т У
        if (((int)word[i] == -48) && ((int)word[i+1] >= -96 && (int)word[i+1] <= -81))
        {       
            word[i] = word[i] + 1;
            word[i+1] = word[i+1] - 32;
        }
 
        //  ? and Ё 
        if ((int)word[i] == -48 && ((int)word[i+1] == -127 || (int)word[i+1] == -122))
        {
            word[i] = word[i] + 1;
            word[i+1] = word[i+1] + 16;
        }
 
    }
 
    return word;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru