/// <summary> /// Кнопка сравнения двух биграмм /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CompareButton_Click(object sender, RoutedEventArgs e) { try { Ngramm1.Биграмм(jpg1_str, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Алфавит1.Массив); Ngramm2.Биграмм(jpg2_str, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Алфавит1.Массив); // Получим таблицы для сравнения Window_N_gram w1 = new Window_N_gram(); int[,] mass1 = w1.ПолучитьТаблицуДляСравнения(Алфавит1.Массив.Count, Ngramm1.Значения_биграм, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Convert.ToDouble(textBox_Количество_символов_Copy1.Text)); Window_N_gram w2 = new Window_N_gram(); int[,] mass2 = w2.ПолучитьТаблицуДляСравнения(Алфавит1.Массив.Count, Ngramm2.Значения_биграм, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Convert.ToDouble(textBox_Количество_символов_Copy1.Text)); // Ищем несовпадения - минимальной высоте/ширине int minWidth = Math.Min(mass1.GetLength(0), mass2.GetLength(0)); // Число строк int minHight = Math.Min(mass1.GetLength(1), mass2.GetLength(1)); // Число столбцов double несовпадения = 0; double совпадения = 0; for (int i = 0; i < minHight; i++) { for (int j = 0; j < minWidth; j++) { if (mass1[i, j] != 0 && 0 != mass2[i, j]) { if (mass1[i, j] == mass2[i, j]) { совпадения++; } else { несовпадения++; } } } } // Считаем процент: if (совпадения + несовпадения == 0) { label.Content = "Изменить интервалы, совпадений/несовпадений нет"; return; } double процент = 100 * совпадения / (совпадения + несовпадения); label.Content = процент.ToString() + "%"; } catch (Exception er) { } }
/// <summary> /// Кнопка анализа второго изображения. /// </summary> private void button1_Click_Copy(object sender, RoutedEventArgs e) { if (jpg2_str.Length < Convert.ToInt32(textBox_Количество_символов_Copy.Text)) { Текст_Ошибка_Copy.Content = "Исследуемое количество символов\nпревышает количества символов в тексте.\nВ тексте " + Convert.ToInt32(textBox1.Text.Length) + " символов."; } else { Текст_Ошибка_Copy.Content = "В изображении " + Convert.ToInt32(jpg2_str.Length) + " символов."; Ngramm2.Биграмм(jpg2_str, Convert.ToInt32(textBox_Количество_символов_Copy.Text), Алфавит1.Массив); Window_N_gram PrintNgramm = new Window_N_gram(Алфавит1.Массив, Ngramm2.Значения_биграм, Convert.ToInt32(textBox_Коэффициент_Copy.Text), Convert.ToDouble(textBox_Количество_символов_Copy.Text)); } }
/// <summary> /// Кнопка сравнения двух биграмм /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CompareButton_Click(object sender, RoutedEventArgs e) { try { Ngramm1.Биграмм(jpg1_str, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Алфавит1.Массив); Ngramm2.Биграмм(jpg2_str, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Алфавит1.Массив); // Получим таблицы для сравнения Window_N_gram w1 = new Window_N_gram(); int[,] mass1 = w1.ПолучитьТаблицуДляСравнения(Алфавит1.Массив.Count, Ngramm1.Значения_биграм, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Convert.ToDouble(textBox_Количество_символов_Copy1.Text)); Window_N_gram w2 = new Window_N_gram(); int[,] mass2 = w2.ПолучитьТаблицуДляСравнения(Алфавит1.Массив.Count, Ngramm2.Значения_биграм, Convert.ToInt32(textBox_Коэффициент_Copy1.Text), Convert.ToDouble(textBox_Количество_символов_Copy1.Text)); // Ищем несовпадения - минимальной высоте/ширине int minWidth = Math.Min(mass1.GetLength(0), mass2.GetLength(0));// Число строк int minHight = Math.Min(mass1.GetLength(1), mass2.GetLength(1));// Число столбцов double несовпадения = 0; double совпадения = 0; for (int i = 0; i < minHight; i++) for (int j = 0; j < minWidth; j++) { if (mass1[i, j] != 0 && 0 != mass2[i, j]) { if (mass1[i, j] == mass2[i, j]) совпадения++; else несовпадения++; } } // Считаем процент: if (совпадения + несовпадения == 0) { label.Content = "Изменить интервалы, совпадений/несовпадений нет"; return; } double процент = 100 * совпадения / (совпадения + несовпадения); label.Content = процент.ToString()+"%"; } catch(Exception er) { } }