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

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

Войти
Регистрация
Восстановить пароль
 
Zhanik
0 / 0 / 0
Регистрация: 14.06.2012
Сообщений: 12
#1

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

14.06.2012, 21:12. Просмотров 664. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как создать частотный словарь на кириллице, который считывает корни слов? (C++):

Создать частотный словарь слов текста из файла - C++
Вывести алфавитный список всех слов заданного текста с указанием количества вхождений слова в текст. Предусмотреть считывание текста для...

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

Частотный словарь из слов текстового файла в виде дерева двоичного поиска - C++
Задача: Построить частотный словарь из слов текстового файла в виде дерева двоичного поиска. Вывести его на экран в виде дерева....

Частотный словарь. - C++
здравствуйте помогите плиз решить последнюю задачу для зачета.вот условие: дан текст.получить сколько раз в нем присутствует каждое...

Частотный словарь приставок - C++
Помогите пожалуйста, нужно составить частотный словарь приставок, имеющегося текстового файла. Я написала программу, но сразу же при...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 21:12
Привет! Вот еще темы с ответами:

Создать класс, который считывает десятичное число и печатает его 2-ый, 8-ый и 16-ый эквивалент - C++
Задача в названии темы, за любую помощь буду премного благодарен.

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

Составить частотный словарь вводимого текста - C++
14. Составить частотный словарь вводимого текста. Распечатать его по алфавиту, а справа от каждого слова – частоту, с которой оно...

Частотный словарь слогов из двух произвольных символов - C++
Ребята помогите разобраться с частотным словарем слов. Нужно написать курсовую на эту тему. Мб какие ссылки дадите.


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

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

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