Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
SkyDanger
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 25
#1

Генерирование вариантов слова, которое "возможно вы имели ввиду"

09.11.2015, 00:28. Просмотров 239. Ответов 5
Метки нет (Все метки)

мне необходимо генерировать контекстное меню,которое появляется при нажатии правой кнопкой мыши по неправильному слову, вот, как я генерирую варианты,которые "возможно вы имели ввиду":
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
void generate(String^ word,OleDbConnection^ oleDbConnection1,System::Windows::Forms::MouseEventArgs^  e)
    {
        char *word2;
        int ascii = 224;
        int i=1;
        int _currentpos=0;
        int length=word->Length;
        word2=new char[word->Length+1];
        word2=StringToChar(word);
        while(_currentpos<length)//замены
        {
            while(ascii<=255)
            {
                word2[_currentpos]=ascii;
                String^ word1= gcnew String(word2);
                if (CheckM(word1,oleDbConnection1))
                    toolStripAdd(word1,e);
                ascii++;
                i++;
            }
            ascii=224;
            _currentpos++;
            word2=StringToChar(word);
        }
        _currentpos=0;
        while (i>length*32 && i<=length*33)//удаления
        {
            while(ascii<=255)
            {
                ascii++;
 
                i++;
            }
            ascii=224;
        }
        _currentpos=0;
        while (i>length*33 && i<(length*65 + 32))//добавления
        {
            while(ascii<=255)
            {
                ascii++;
                i++;
            }
            ascii=224;
        }
        contextMenuStrip1->Show(e->Location);
        return;
    }
для удаления и добавления новых символов еще не написал.
подразумевается 1 возможная ошибка.
StringToChar,toolStripAdd и CkeckM - собственные методы перевода String^ в char*, добавления итема в контекстное меню и проверки сгенерированного слова.
вопрос: как ускорить генерирование?ибо работает медленно,и это только для замены символов и для 1 ошибки...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2015, 00:28
Ответы с готовыми решениями:

Возможно ли "достать" исходник
Возможно ли получить исходник программы, написанной на c++/cli также легко, как...

Кнопки "Свернуть" "Развернуть" "Закрыть"
Подскажите, как определить, что была нажата одна из кнопок &quot;Свернуть&quot;,...

Реализация команд меню "Создать", "Сохранить", "Сохранить как ..."
Здравствуйте! Пытаюсь работать в windows forms. Cуть программы такова :...

Ошибка C3867 "нестандартный синтаксис; используйте "&", чтобы создать указатель на член"
pictureBox1-&gt;Invalidate; Вызывает ошибку C3867. Что сделать то нужно? И...

Библиотека fftw, Error C2228: left of ".real",".imag" must have struct/class/union
#include &quot;stdafx.h&quot; #include &lt;fftw3.h&gt; #include &lt;math.h&gt; #include &lt;complex&gt;...

5
tezaurismosis
Администратор
Эксперт .NET
8481 / 3808 / 723
Регистрация: 17.04.2012
Сообщений: 8,507
Записей в блоге: 14
09.11.2015, 18:20 #2
То есть вы генерируете все возможные слова и затем проверяете, есть ли какое-либо из них в словаре?
Другие варианты: искать по части слова в базе среди вариантов. Для поиска разницы строк есть разные методы, ознакомьтесь с общими понятиями, чтобы было от чего отталкиваться: Расстояние Левенштейна
0
SkyDanger
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 25
09.11.2015, 22:18  [ТС] #3
спасибо,я замерял время...в общем как оказалось,само генерирование занимает буквально пару миллисекунд, все время занимает метод CheckM, и как его ускорить бес понятия=(
0
tezaurismosis
Администратор
Эксперт .NET
8481 / 3808 / 723
Регистрация: 17.04.2012
Сообщений: 8,507
Записей в блоге: 14
10.11.2015, 04:55 #4
SkyDanger, а где этот CheckM? Вот отсюда: Быстрая проверка сгенерированных вариантов (там просто Check)?
0
SkyDanger
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 25
12.11.2015, 15:15  [ТС] #5
ну это и есть он, просто когда создавал ту тему, переименовал на просто Check

Добавлено через 16 часов 17 минут
tezaurismosis, сегодня преподаватель по поводу медленной работы произнес словосочетание "индексирование базы данных", на сколько это может ускорить? и как именно это можно было бы сделать?..
0
tezaurismosis
Администратор
Эксперт .NET
8481 / 3808 / 723
Регистрация: 17.04.2012
Сообщений: 8,507
Записей в блоге: 14
12.11.2015, 15:28 #6
Вроде как индексирование ускоряет доступ к полям БД, но в акцессе такого не делал, не знаю.
Гугл нашёл http://www.taurion.ru/access/2/14
0
12.11.2015, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 15:28

Error C2678: бинарный "<": не найден оператор, принимающий левый операнд типа "System::Decimal"
Делал программу для расчета exp, с точностью до eps = 0.1, …, 0.000001 путем...

Бинарный "+": не найден оператор, принимающий правый операнд типа "LPCWSTR"
c++ бинарный &quot;+&quot;: не найден оператор, принимающий правый операнд типа &quot;LPCWSTR&quot;...

No suitable constructor exists to convert from "System::String ^" to "std::basic_string"
Вот метод, которая я вызываю при нажатии кнопки в окне ПО, но дело в том, что...


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

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

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