private void button2_Click(object sender, EventArgs e) { Stopwatch extime = new Stopwatch(); string new_str = "\0"; Random rnd = new Random(); button2.BackColor = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)); button2.ForeColor = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)); if (radioButton1.Checked == true) { extime.Start(); for (int i = 0; i < word_list.Count; i++) { if (word_list[i].Contains(textBox3.Text) && !listBox1.Items.Contains(word_list[i])) { new_str = word_list[i]; break; } else { new_str = "\0"; } } } else if (radioButton2.Checked == true) { extime.Start(); int max_dist; if ((int.TryParse(textBox5.Text, out max_dist))) { for (int i = 0; i < word_list.Count; i++) { if (LevDistance.VagnerCalculation(word_list[i], textBox3.Text) <= max_dist && !listBox1.Items.Contains(word_list[i])) { new_str = word_list[i]; break; } else { new_str = "\0"; } } } } else { MessageBox.Show("Пожалуйста, выберите метод поиска слова!"); } if (new_str[0] != '\0') { listBox1.BeginUpdate(); listBox1.Items.Add(new_str); listBox1.EndUpdate(); } extime.Stop(); textBox4.Text = extime.ElapsedMilliseconds.ToString(); }
protected string ClosestMatch(string target, List <string> options) { int lowest = LevDistance.Compute(target, options[0]); string selectedVal = string.Empty; foreach (string option in options) { int currentDist = LevDistance.Compute(target, option); if (currentDist < lowest) { lowest = currentDist; selectedVal = option; } } return(selectedVal); }
public static List <ParallelSearchResult> ArrayThreadTask(object t_param) { ParallelSearchThreadParam param = t_param as ParallelSearchThreadParam; string word_temp = param.wordTemp.Trim(); List <ParallelSearchResult> result_list = new List <ParallelSearchResult>(); foreach (string str in param.searchList) { int dist = LevDistance.VagnerCalculation(str.ToUpper(), word_temp.ToUpper()); if (dist <= param.maxDist) { ParallelSearchResult temp_list = new ParallelSearchResult() { word = str, dist = dist, threadNum = param.threadNum }; result_list.Add(temp_list); } } return(result_list); }
private void searchButton_Click(object sender, EventArgs e) { string searchingWord = this.searchWord.Text.Trim(); //получаем текст if (WordList.Count > 0 && !string.IsNullOrWhiteSpace(searchingWord)) { if (this.checkBoxLevDist.Checked == true) // Если стоит галочка (Задание ЛР5) { string originStr = this.searchWord.Text.Trim(); int maxDist = int.Parse(this.textBox4.Text.Trim()); int digit = 1000; // условно 1000 (не может же быть слова из 1000 букв :) ) int i = 0, j = 0; Stopwatch time = new Stopwatch(); time.Start(); foreach (string str in WordList) { int digitTemp = LevDistance.Distance(originStr, str); if (digitTemp < digit) { digit = digitTemp; i = j; //запонимаем индекс слова в списке, имеющего на данный момент наименьшее расстоятние Л. } j++; } time.Stop(); this.textBoxExactTime.Text = time.Elapsed.ToString(); this.listBoxResult.BeginUpdate(); this.listBoxResult.Items.Clear(); if (digit == -1) { this.listBoxResult.Items.Add("Пустые строки... Введите слово (текст)"); } else if (maxDist != 0) // Если пользователь ввел интересующее его расстояние Левенштейна { if (digit <= maxDist) { this.listBoxResult.Items.Add("Найденое слово: " + WordList[i]); this.listBoxResult.Items.Add("Слова можно считать совпадающими"); this.listBoxResult.Items.Add("Расстояние Левенштейна: " + digit + " <= " + maxDist); } if (digit > maxDist) { this.listBoxResult.Items.Add("Слово '" + originStr + "' в тексте не найдено"); this.listBoxResult.Items.Add("Не одно слово из текста не совпало с искомым"); this.listBoxResult.Items.Add("Расстояние Левенштейна: " + digit + " > " + maxDist); } } else // если растояние Левенштейна пользователем не указано ( находим слово с наименьшим расстоянием Левенштейна ) { this.listBoxResult.Items.Add("Найденое слово: " + WordList[i]); this.listBoxResult.Items.Add("Расстояние Левенштейна: " + digit); } this.listBoxResult.EndUpdate(); } else // если галочка не стоит (Задание ЛР4) { // для поиска в верхнем регистре string wordUpper = searchingWord.ToUpper(); // временные результаты поиска List <string> tempList = new List <string>(); Stopwatch time = new Stopwatch(); time.Start(); foreach (string str in WordList) { if (str.ToUpper().Contains(wordUpper)) { tempList.Add(str); } } time.Stop(); this.textBoxExactTime.Text = time.Elapsed.ToString(); this.listBoxResult.BeginUpdate(); // отчистка listBox this.listBoxResult.Items.Clear(); // вывод найденного слова foreach (string str in tempList) { string massege = "Найденное слово: "; this.listBoxResult.Items.Add(massege + str); } this.listBoxResult.EndUpdate(); if (tempList.Count == 0) { string massege = ":/ искомого слова в тексте нет :/"; this.listBoxResult.Items.Add(massege); } } } else { MessageBox.Show("Необходимо выбрать файл и ввести слово для поиска"); } }