private void buttonSeach_Click(object sender, EventArgs e) { string word = this.textBoxFind.Text.Trim(); //введенное слово для поиска if (!string.IsNullOrWhiteSpace(word) && list.Count > 0) //если слово не пустое { int kol; if (!int.TryParse(this.TextBoxKol.Text.Trim(), out kol)) { MessageBox.Show("Необходимо указать максимальное расстояние"); return; } if (kol < 1 || kol > 5) { MessageBox.Show("Масксимальное расстояние должно быть больше 1 и меньше 5"); return; } string wordUp = word.ToUpper(); //перевели в верхний регистр List <string> tempList = new List <string>(); //пустой массив для найденных слов Stopwatch t = new Stopwatch(); t.Start(); //начали отсчет foreach (string i in list) { if (EditDistance.Distance(i.ToUpper(), wordUp) <= kol) // если растояние меньше указанного, то { tempList.Add(i); //записываем во временный список } } t.Stop(); this.labelTime2.Text = (t.ElapsedTicks * 0.0001).ToString(); this.listBoxResults.Items.Clear(); //очистили список (чтоб не показывал предыдущие результаты) this.listBoxResults.BeginUpdate(); foreach (string i in tempList) { this.listBoxResults.Items.Add(i); } this.listBoxResults.EndUpdate(); } else { MessageBox.Show("Нужно ввести слово для поиска"); } }
public static List <ParallelSearchResult> ArrayThreadTask(object paramObj) { ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj; string wordUpper = param.wordPattern.Trim().ToUpper(); List <ParallelSearchResult> Result = new List <ParallelSearchResult>(); foreach (string str in param.tempList) { int dist = EditDistance.Distance(str.ToUpper(), wordUpper); if (dist <= param.maxDist) { ParallelSearchResult temp = new ParallelSearchResult() { word = str, dist = dist, ThreadNum = param.ThreadNum }; Result.Add(temp); } } return(Result); }
private void buttonLevenshteinDist_Click(object sender, EventArgs e) { //Слово для поиска string word = this.textBoxFind.Text.Trim(); //Если слово для поиска не пусто if (!string.IsNullOrWhiteSpace(word) && list.Count > 0) { int maxDist; if (!int.TryParse(this.textBoxmaxDist.Text.Trim(), out maxDist)) { MessageBox.Show("Необходимо указать максимальное расстояние"); return; } if (maxDist < 1 || maxDist > 5) { MessageBox.Show("Максимальное расстояние должно быть в диапазоне от 1 до 5"); return; } //Подтягиваем буквы вверх, чтобы не было проблем с регистром word = word.ToUpper(); //запуск листбокса this.listBoxResult1.BeginUpdate(); this.listBoxResult1.Items.Clear(); Stopwatch timer = new Stopwatch(); if (!string.IsNullOrWhiteSpace(word) && list.Count > 0) { //Проверка на случай отсутствия совпадений bool NoMatches = true; //запуск таймера timer.Start(); foreach (string w in list) { //идёт проверка слов в верхнем регистре if (EditDistance.Distance(w.ToUpper(), word) <= maxDist) { this.listBoxResult1.Items.Add(w); NoMatches = false; } } //остановка таймера timer.Stop(); //Если совпадений всё же не нашлось if (NoMatches) { this.listBoxResult1.Items.Add("Нет сопадений"); } } else { MessageBox.Show("Необходимо отрыть файл и выбрать слово для поиска"); } this.listBoxResult1.EndUpdate(); //запись даных из таймера this.textBoxParallTime.Text = timer.Elapsed.ToString(); } }