//метод очистки private void ClearMethod() { EnterTextBox.Clear(); CodeTextBox.Clear(); MessWithourErrorTextBox.Clear(); PositionMistakeTextBox.Clear(); }
//метод очистки private void ClearMethod() { PolinomtextBox.Clear(); CodeTextBox.Clear(); ErrorTextBox.Clear(); MessWithErrorTextBox.Clear(); RecoveryTextBox.Clear(); }
private void AddCourseButton_Click(object sender, RoutedEventArgs e) { mytrimer(); if (CheckIfThereIsEmptyTextBox()) { MessageBox.Show("Some textbox is missing."); } else { if (CheckNumberOfStudentsTextBoxes() && CheckGradesTextBoxes() && CheckHoursTextBox() && CheckAllTheRemainingTextBoxes()) { string Code = CodeTextBox.Text; string CourseName = CourseNameTextBox.Text; int MaximumNumber = int.Parse(MaximumNumberOfStudentsTextBox.Text); int CurrentNumber = int.Parse(CurrentNumberOfStudentsTextBox.Text); int PassingGrade = int.Parse(PassingGradeTextBox.Text); int CourseGrade = int.Parse(CourseGradeTextBox.Text); int Hours = int.Parse(HoursTextBox.Text); string Instructor = InstructorTextBox.Text; string Description = DescriptionTextBox.Text; CoursePrerequstiesTmp = new List <string>(); if (WelcomePage.AllCoursesDictionary.ContainsKey(CourseName)) { MessageBox.Show("This course already exists."); } else { AddNewCourseSecondStep nw = new AddNewCourseSecondStep(); nw.ShowDialog(); Course newcourse = new Course(Code, CourseName, MaximumNumber, CurrentNumber, PassingGrade, CourseGrade, Hours, Instructor, Description, CoursePrerequstiesTmp); WelcomePage.AllCoursesDictionary[CourseName] = newcourse; CodeTextBox.Clear(); CourseNameTextBox.Clear(); MaximumNumberOfStudentsTextBox.Clear(); //CurrentNumberOfStudentsTextBox.Clear(); PassingGradeTextBox.Clear(); CourseGradeTextBox.Clear(); HoursTextBox.Clear(); InstructorTextBox.Clear(); DescriptionTextBox.Clear(); } } } }
private void OKFolderButton_Click(object sender, EventArgs e) { if (CodeTextBox.Text.Length == 0) { return; } if (Security.CheckAuth(CodeTextBox.Text)) { FormEvent = eClose; AnimateTimer.Enabled = true; } else { CodeTextBox.Clear(); return; } }
//метод раскодировки сообщений private void DecodeMessage() { try { string binaryNumber; if (EnterTextBox.Text != string.Empty) { binaryNumber = EnterTextBox.Text; //вводим двоичное число из текстбокса for (int i = 0; i < binaryNumber.Length; i++) { int temp = Convert.ToInt32(Convert.ToString(binaryNumber[i])); if ((temp != 0) && (temp != 1)) { MessageBox.Show("Сообщение должно быть двоичным, попробуйте ещё раз!"); EnterTextBox.Clear(); CodeTextBox.Clear(); return; } } } else { MessageBox.Show("Не введено сообщение!"); CodeTextBox.Clear(); return; } int m = binaryNumber.Length; //длина введённого закодированного сообщения if (m < 3) { MessageBox.Show("Длина сообщения должна быть больше 3, иначе неверно!"); EnterTextBox.Clear(); CodeTextBox.Clear(); return; } if (BinaryClass.IsPowTwo(m)) { MessageBox.Show("Длина закодирванного сообщения не должна быть равна степени двойки!"); EnterTextBox.Clear(); CodeTextBox.Clear(); return; } int n = (int)Math.Truncate(m - Math.Log(m + 1, 2)); //длина раскодированного сообщения int[] decode = new int[n]; //массив для закодированного сообщения int count = 0; for (int i = 0; i < m; i++) { if ((i + 1) == 1) { continue; } if (BinaryClass.IsPowTwo(i + 1)) { continue; } decode[count] = binaryNumber[i]; count++; } //переводим массив в строковую переменную и выводим в текстбокс string vyvod = ""; foreach (var v in decode) { vyvod = vyvod + Convert.ToString(Convert.ToChar(v)); } CodeTextBox.Text = vyvod; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//метод исправления ошибок private void MistakeCorrection() { try { string binaryNumber; if (EnterTextBox.Text != string.Empty) { binaryNumber = EnterTextBox.Text; //вводим двоичное число из текстбокса for (int i = 0; i < binaryNumber.Length; i++) { int temp = Convert.ToInt32(Convert.ToString(binaryNumber[i])); if ((temp != 0) && (temp != 1)) { MessageBox.Show("Сообщение должно быть двоичным, попробуйте ещё раз!"); EnterTextBox.Clear(); CodeTextBox.Clear(); return; } } } else { MessageBox.Show("Не введено сообщение!"); CodeTextBox.Clear(); return; } int n = binaryNumber.Length; //длина введённого числа в двоичной форме int m = BinaryClass.SearchM(n); //для заданного n ищем длину закодированного слова int countControlSymbols = m - n; //количество контрольных символов в зашифрованном слове, передаём это в матрицу int[] code = new int[m]; //массив для закодированного слова int deg = 0, count = 0; //по введённым данным строим матрицу Хэмминга var hammingsMatrix = BuildMatrix.BuildHMatrix(countControlSymbols); //на контрольные символы ставим временно "9", а на информационные - исходное слово for (int i = 0; i < m; i++) { //если выполняется это условие - значит нашли контрольный символ if ((i + 1) == Math.Pow(2, deg)) { deg++; code[i] = 9; } //иначе вставляем исходное слово else { code[i] = int.Parse(Convert.ToString(binaryNumber[count])); count++; } } int hammingsMatrixLines = hammingsMatrix.GetLength(0); //количество строк в матрице Хэмминга int hammingsMatrixColumn = hammingsMatrix.GetLength(1); //количество столбцов в матрице Хэмминга int countcontrol = -1; //вычисляем итоговые контрольные символы for (int i = 0; i < m; i++) { int flag = 1; int sum = 0; if (code[i] == 9) { countcontrol++; int line = hammingsMatrixLines - 1 - countcontrol; for (int j = 0; j < hammingsMatrixColumn; j++) { if ((hammingsMatrix[line, j] == 1) && (flag == 1)) { flag = 0; continue; } if ((hammingsMatrix[line, j] == 1) && (flag == 0)) { if (j <= code.Length - 1) { sum = sum + code[j]; } } } code[i] = sum % 2; } } //переводим массив в строковую переменную string vernyVyvod = ""; foreach (var v in code) { vernyVyvod = vernyVyvod + Convert.ToString(v); } var rnd = new Random(); var mistake = rnd.Next(1, m + 1); code[mistake - 1] = BinaryClass.ReverseSym(code[mistake - 1]); //генерируем ошибку //переводим массив в строковую переменную и выводим в текстбокс string vyvod = ""; foreach (var v in code) { vyvod = vyvod + Convert.ToString(v); } CodeTextBox.Text = vyvod; //считаем, сколько единиц в закодированном сообщении int countN = 0; for (int i = 0; i < m; i++) { if (code[i] == 1) { countN++; } } //вспомогательный массив для вычисления синдрома и его длина int countAuxArray = countControlSymbols * countN; int[] auxiliaryArray = new int[countAuxArray]; //в вспомогательный массив записываем те столбцы матрицы Хэмминга, //которые соответствуют единице в закодированном сообщении длины m int index = 0; for (int i = 0; i < m; i++) { if (code[i] == 1) { for (int j = 0; j < hammingsMatrixLines; j++) { auxiliaryArray[index] = hammingsMatrix[j, i]; index++; } } } //ищем сумму цифр на определённых позициях (синдром по сути) //результат - номер позиции ошибки в двоичной сс int positionmistake = 0; for (int i = 0; i < countControlSymbols; i++) { var result = 0; for (int t = 0; t < countN; t++) { if ((i + countControlSymbols * t) < countAuxArray) { result = result + auxiliaryArray[i + countControlSymbols * t]; } } positionmistake = positionmistake * 10 + result % 2; } //переводим номер ошибки в десятичную сс и выводим в текстбокс positionmistake = BinaryClass.TranslationOfBinary(positionmistake); PositionMistakeTextBox.Text = Convert.ToString(positionmistake); MessWithourErrorTextBox.Text = vernyVyvod; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//метод кодирования сообщения по методу Хаффмана private void CodeMessage() { try { string binaryNumber; if (EnterTextBox.Text != string.Empty) { binaryNumber = EnterTextBox.Text; //вводим двоичное число из текстбокса for (int i = 0; i < binaryNumber.Length; i++) { int temp = Convert.ToInt32(Convert.ToString(binaryNumber[i])); if ((temp != 0) && (temp != 1)) { MessageBox.Show("Сообщение должно быть двоичным, попробуйте ещё раз!"); EnterTextBox.Clear(); CodeTextBox.Clear(); return; } } } else { MessageBox.Show("Не введено сообщение!"); CodeTextBox.Clear(); return; } int n = binaryNumber.Length; //длина введённого числа в двоичной форме int m = BinaryClass.SearchM(n); //для заданного n ищем длину закодированного слова int countControlSymbols = m - n; //количество контрольных символов в зашифрованном слове, передаём это в матрицу int[] code = new int[m]; //массив для закодированного слова int deg = 0, count = 0; //по введённым данным строим матрицу Хэмминга var hammingsMatrix = BuildMatrix.BuildHMatrix(countControlSymbols); //на контрольные символы ставим временно "9", а на информационные - исходное слово for (int i = 0; i < m; i++) { //если выполняется это условие - значит нашли контрольный символ if ((i + 1) == Math.Pow(2, deg)) { deg++; code[i] = 9; } //иначе вставляем исходное слово else { code[i] = int.Parse(Convert.ToString(binaryNumber[count])); count++; } } int hammingsMatrixLines = hammingsMatrix.GetLength(0); //количество строк в матрице Хэмминга int hammingsMatrixColumn = hammingsMatrix.GetLength(1); //количество столбцов в матрице Хэмминга int countcontrol = -1; //вычисляем итоговые контрольные символы for (int i = 0; i < m; i++) { int flag = 1; int sum = 0; if (code[i] == 9) { countcontrol++; int line = hammingsMatrixLines - 1 - countcontrol; for (int j = 0; j < hammingsMatrixColumn; j++) { if ((hammingsMatrix[line, j] == 1) && (flag == 1)) { flag = 0; continue; } if ((hammingsMatrix[line, j] == 1) && (flag == 0)) { if (j <= code.Length - 1) { sum = sum + code[j]; } } } code[i] = sum % 2; } } //переводим массив в строковую переменную и выводим в текстбокс string vyvod = ""; foreach (var v in code) { vyvod = vyvod + Convert.ToString(v); } CodeTextBox.Text = vyvod; } catch (Exception ex) { MessageBox.Show(ex.Message); } }