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

Частотный словарь приставок - C++

Восстановить пароль Регистрация
 
Elegance
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 4
11.05.2012, 16:09     Частотный словарь приставок #1
Помогите пожалуйста, нужно составить частотный словарь приставок, имеющегося текстового файла.
Я написала программу, но сразу же при проверки на корректность, выскакивает результат "Ошибка", да и то не на русском, а закарючки какие-то. Текстотовый файл в папке проекта.
Может где-то ошиблась
#include "stdafx.h"
#include <fstream>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>

using namespace std;

const int M=2, N=14;
int i;
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

ifstream f_in;
f_in.open("aaa.txt");
if (f_in==NULL)
{
cout << "Ошибка";
_getch();
exit(1);
};

string pristavki[N]= { "при" , "пре" , "про" , "пра" , "над" , "под" , "без" , "бес" , "воз" , "вос" , "низ" , "нис" , "раз" , "рас" };
int kolvo[N];
string curword;

while (!f_in.eof())
{
f_in >> curword;
for( int i=0; i<N; i++)
{
if (curword == pristavki[i])
kolvo[i] = kolvo[i] + 1;
}
}

for (i=0; i<N; i++)
{
cout << pristavki[i] << " " << endl;
cout << kolvo[i] << " " << endl;
}
_getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 16:09     Частотный словарь приставок
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
11.05.2012, 19:00     Частотный словарь приставок #2
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
#include <string.h>
#include <locale.h>
 
#include <iostream>
#include <fstream>
 
typedef struct Prefix
{
    char m_pszPrefix[256];
    int m_nCount;
} PREFIXDATA;
 
#define __countof(p) sizeof(p) / sizeof(p[0]) \
 
static PREFIXDATA lpPD[] = { { "при", 0 }, { "пре", 0 }, { "про", 0 }, { "пра", 0 },
                             { "над", 0 }, { "под", 0 }, { "без", 0 }, { "бес", 0 },
                             { "воз", 0 }, { "вос", 0 }, { "низ", 0 }, { "нис", 0 },
                             { "раз", 0 }, { "рас", 0 }};
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    const char* filename = "d:\\input.txt";
    ifstream ifs(filename, ifstream::in);
 
    static char psz[256] = "\0"; 
    int nLength = 0, nWCount = 0; 
    while (ifs.peek() >= 0 && ifs.getline(psz,256))
    {
        int nCount = 0; 
        char** words = new char*[256];
        for (char* word = strtok(psz," "); 
            word != NULL; word = strtok(NULL," "))
        {
            words[nCount] = new char[256];
            strcpy(words[nCount++], word);
        }
 
        nLength = __countof(lpPD); nWCount+=nCount;
        for (int index = 0; index != nLength ; index++)
             for (int nWords = 0; nWords < nCount; nWords++)
             {
                 char* buf = NULL; int k = 0;
                 if (((buf = strchr(words[nWords], 
                      lpPD[index].m_pszPrefix[0])) != NULL) && (*buf == *words[nWords])) 
                      while (*buf++ == lpPD[index].m_pszPrefix[k]) k++;
                 if (k == strlen(lpPD[index].m_pszPrefix)) lpPD[index].m_nCount++;
            }
    }
 
    for (int q = 0; q != nLength; q++)
        printf("prefix=\"%s\" count = %d freq = %4.2f\n", lpPD[q].m_pszPrefix, 
            lpPD[q].m_nCount, (double)lpPD[q].m_nCount / nWCount);
 
    return 0;
}
Вложения
Тип файла: zip prefix.zip (21.1 Кб, 4 просмотров)
Yandex
Объявления
11.05.2012, 19:00     Частотный словарь приставок
Ответ Создать тему
Опции темы

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