public void Run() { //получаем список директорий string[] folders = Directory.GetDirectories(path); foreach (string folder in folders) { string current = folder.Split(Path.DirectorySeparatorChar).Last(); string full = Path.Combine(path, current, keyWord); if (Directory.EnumerateFileSystemEntries(folder).Any() && Directory.Exists(full) && Directory.EnumerateFileSystemEntries(full).Any()) { //каталог не пустой и в нём есть папка "теория" или "примеры", которая тоже не пуста //получаем список файлов и начинаем конвертацию TexUtils.Render render = new TexUtils.Render(""); string[] files = Directory.GetFiles(full); foreach (string file in files) { if (Path.GetExtension(file) == ".tex") { string fulloutput = Path.Combine(savepath, current, keyWord, Path.GetFileNameWithoutExtension(file)); System.IO.Directory.CreateDirectory(fulloutput); render.Directory = fulloutput; render.TexToHtml(file); render.Reset(); } } } else { Logs.WriteLine("В теме '" + current + "' папка '" + keyWord + "' оказалась пустой"); } } }
public void Run() { //получаем список директорий string[] folders = Directory.GetDirectories(path); foreach (string folder in folders) { string current = folder.Split(Path.DirectorySeparatorChar).Last(); string full = Path.Combine(path, current, keyWord); if (Directory.EnumerateFileSystemEntries(folder).Any() && Directory.Exists(full) && Directory.EnumerateFileSystemEntries(full).Any()) { //каталог не пустой и в нём есть папка "теория" или "примеры", которая тоже не пуста //получаем список файлов и начинаем конвертацию TexUtils.Render render = new TexUtils.Render(""); string[] files = Directory.GetFiles(full); foreach (string file in files) if (Path.GetExtension(file) == ".tex") { string fulloutput = Path.Combine(savepath, current, keyWord, Path.GetFileNameWithoutExtension(file)); System.IO.Directory.CreateDirectory(fulloutput); render.SetDirectory = fulloutput; render.TexToHTML(file); render.Reset(); } } else { Logs.WriteLine("В теме '"+current+"' папка '"+keyWord+"' оказалась пустой"); } } }
private void btn_result_Click(object sender, EventArgs e) { Complex c1; var c2 = new Complex(); var d = 1.0; if (!TryGetComplex(textBoxReal1, textBoxImaginary1, out c1) || (CurrentOperation < Operation.Pow && !TryGetComplex(textBoxReal2, textBoxImaginary2, out c2)) || (CurrentOperation == Operation.Pow && !double.TryParse(textBoxPow.Text, out d))) { MessageBox.Show("Заполните поля корректными значениями!"); return; } string result; switch (CurrentOperation) { case Operation.Add: result = ComplexUtils.Add(c1, c2, checkBoxDetails.Checked); break; case Operation.Mul: result = ComplexUtils.Multiply(c1, c2, checkBoxDetails.Checked); break; case Operation.Div: result = ComplexUtils.Divide(c1, c2, checkBoxDetails.Checked); break; case Operation.Pow: result = ComplexUtils.Power(c1, d, checkBoxDetails.Checked); break; case Operation.Convert: result = ComplexUtils.Convert(c1, checkBoxDetails.Checked); break; default: throw new ArgumentOutOfRangeException(); } //очистка временной директории try { Directory.Delete(DirectoriesSettings.ComplexCalculatorPath, true); } catch (Exception ex) { Logs.WriteLine("При удалении старых файлов калькулятора комплексных чисел. Подробности:" + ex.Message); } var render = new TexUtils.Render(DirectoriesSettings.ComplexCalculatorPath); var lines = result.Split(new[] { Environment.NewLine }, StringSplitOptions.None); render.StringsToHtml(lines, "калькулятора матриц"); browserResults.Navigate("file:///" + render.HtmlPath); _settings.ApplyWebBrowserStyle(browserResults); }
public void Run() { //root_folders //получаем список директорий string[] root_folders = Directory.GetDirectories(path); foreach (string root_folder in root_folders) { string current = root_folder.Split(Path.DirectorySeparatorChar).Last(); string full = Path.Combine(path, current, keyWord); //full=тема/тесты/ if (Directory.EnumerateFileSystemEntries(root_folder).Any() && Directory.Exists(full) && Directory.EnumerateFileSystemEntries(full).Any()) { //каталог не пустой и в нём есть папка "тесты", которая тоже не пуста string[] folders = Directory.GetDirectories(full); foreach (string folder in folders) { if (Directory.EnumerateFileSystemEntries(folder).Any()) { //в тестах нашёлся непустой подкаталог //получаем список файлов string[] files = Directory.GetFiles(folder); string temp = ""; int file_lines = 0; List <Object> answers = new List <Object>(); try { double obj = 0; using (StreamReader reader = new StreamReader(Path.Combine(folder, "ответы.txt"), System.Text.Encoding.GetEncoding("windows-1251"), true)) while ((temp = reader.ReadLine()) != null) { if (Double.TryParse(temp, out obj)) { answers.Add(obj); } else { answers.Add(temp); } file_lines++; } } catch (Exception e) { Logs.WriteLine("В теме '" + current + "в тесте " + folder.Split(Path.DirectorySeparatorChar).Last() + " файл ответов был не найден или содержал ошибки. Подробности: " + e.Message); continue; } if (files.Length - 1 == file_lines) { //отрендерить вопросы TexUtils.Render render = new TexUtils.Render(""); foreach (string file in files) { if (Path.GetExtension(file) == ".tex") { string fulloutput = Path.Combine(savepath, current, keyWord, folder.Split(Path.DirectorySeparatorChar).Last(), Path.GetFileNameWithoutExtension(file)); //MessageBox.Show(fulloutput); System.IO.Directory.CreateDirectory(fulloutput); render.Directory = fulloutput; render.TexToHtml(file); render.Reset(); } } //запись бинарного файла ответов FileStream fs = new FileStream(Path.Combine(savepath, current, keyWord, folder.Split(Path.DirectorySeparatorChar).Last(), "answers.dat"), FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); try { formatter.Serialize(fs, answers); } catch (SerializationException e) { Logs.WriteLine("Ошибка сериализации. Подробности: " + e.Message); throw; } finally { fs.Close(); } } else { Logs.WriteLine("В теме '" + current + "' в папке '" + keyWord + "' количество вопросов и ответов не совпадают. Проверьте пустые строки в конце файла."); } } } } else { Logs.WriteLine("В теме '" + current + "' папка '" + keyWord + "' оказалась пустой"); } } }
//private Complex Rea private void btn_result_Click(object sender, EventArgs e) { Complex c1 = new Complex(); Complex c2 = new Complex(); try { c1 = new Complex(Double.Parse(tbx_complex1_a.Text), Double.Parse(tbx_complex1_b.Text)); } catch { MessageBox.Show("Ошибка при считывании первого числа"); } try { c2 = new Complex(Double.Parse(tbx_complex2_a.Text), Double.Parse(tbx_complex2_b.Text)); } catch { MessageBox.Show("Ошибка при считывании второго числа"); } string result = ""; //вызов соответствующих процедур foreach (Control panel_control in split_complex.Panel2.Controls) if (panel_control is GroupBox) switch (panel_control.Name) { case "gbx_два_компл_действия": if (chbx_два_компл.Checked == true) foreach (Control group_control in panel_control.Controls) if ((group_control is CheckBox) && ((CheckBox)group_control).Checked && group_control.Name!="chbx_два_компл") { string function = group_control.Name.Substring(5); Type matr_utils = typeof(ComplexUtils); MethodInfo method = matr_utils.GetMethod(function); result += (string)method.Invoke(this, new object[] { c1, c2, this.chbx_details.Checked }); } break; default: foreach (Control group_control in panel_control.Controls) if ((group_control is CheckBox) && ((CheckBox)group_control).Checked) { string function = group_control.Name.Substring(5); Type matr_utils = typeof(ComplexUtils); MethodInfo method = matr_utils.GetMethod(function); Control[] controls = Controls.Find("numeric_" + function, true); if (controls.Count() == 0) //MessageBox.Show(String.Format("Для чекбокса {0} не найден привязанный комбобокс", group_control.Name)); result += (string)method.Invoke(this, new object[] { c1, this.chbx_details.Checked }); else { //вызов для одного или двух нумериков Control[] controls2 = Controls.Find("numeric_" + function + "_2", true); if (controls2.Count() == 0) //один нумерик result += (string)method.Invoke(this, new object[] { c1, Int32.Parse(((NumericUpDown)controls[0]).Value.ToString()), this.chbx_details.Checked }); else //два нумерика result += (string)method.Invoke(this, new object[] { c1, ((NumericUpDown)controls[0]).Value, ((NumericUpDown)controls2[0]).Value, this.chbx_details.Checked }); } } break; } //очистка временной директории try { Directory.Delete(DirectoriesSettings.ComplexCalculatorPath, true); } catch (Exception ex) { Logs.WriteLine("При удалении старых файлов калькулятора матриц. Подробности:" + ex.Message); } TexUtils.Render r1 = new TexUtils.Render(DirectoriesSettings.ComplexCalculatorPath); string[] temp = result.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); r1.StringToHTML(temp, "калькулятора матриц"); browser_results.Navigate(String.Format("file:///{0}", r1.HTMLPath)); //settings.ApplyWebBrowserStyle(browser_results); }
private void btn_calculate_Click(object sender, EventArgs e) { Expression[,] A = new Expression[dgv_mtr1.Rows.Count, dgv_mtr1.Columns.Count]; Expression[,] B = new Expression[dgv_mtr2.Rows.Count, dgv_mtr2.Columns.Count]; try { ReadMatr(dgv_mtr1, A); } catch { MessageBox.Show("Ошибка при считывании первой матрицы", "Ошибка матрицы", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (dgv_mtr2.Visible) { try { ReadMatr(dgv_mtr2, B); } catch { MessageBox.Show("Ошибка при считывании второй матрицы", "Ошибка матрицы", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } foreach (object obj in groupBoxOperations.Controls) { if (obj is RadioButton) { RadioButton radioButton = (RadioButton)obj; string result = ""; if (radioButton.Checked) { Type matr_utils = typeof(MatrixUtils); switch (radioButton.Name) { case "radioButtonSumMatrix": result += MatrixUtils.две_матр_действия_сложение(A, B, this.chbx_details.Checked); break; case "radioButtonSubMatrix": result += MatrixUtils.две_матр_действия_вычитание(A, B, this.chbx_details.Checked); break; case "radioButtonMultMatrix": result += MatrixUtils.две_матр_действия_умножение(A, B, this.chbx_details.Checked); break; case "radioButtonDeterminantSarrus": result += MatrixUtils.определитель_саррюс(A, this.chbx_details.Checked); break; case "radioButtonDeterminantRow": result += MatrixUtils.определитель_разложение_строка(A, (int)numericUpDownDeterminantRow.Value - 1, this.chbx_details.Checked); break; case "radioButtonDeterminantColumn": result += MatrixUtils.определитель_разложение_столбец(A, (int)numericUpDownDeterminantColumn.Value - 1, this.chbx_details.Checked); break; case "radioButtonDeterminantLaplas": result += MatrixUtils.определитель_лаплас(A, (int)numericUpDownDeterminantLaplasString1.Value - 1, (int)numericUpDownDeterminantLaplasString2.Value - 1, this.chbx_details.Checked); break; case "radioButtonRankIdentityMatrix": result += MatrixUtils.ранг_метод_окаймляющих_миноров(A, this.chbx_details.Checked); break; case "radioButtonRankGauss": result += MatrixUtils.ранг(A, this.chbx_details.Checked); // неправильно работает для нулевой матрицы break; case "radioButtonEquationCheck": result += MatrixUtils.проверка_критерия_совместности(A, this.chbx_details.Checked); break; case "radioButtonEquationSolveGauss": result += MatrixUtils.слу_гаусс(A, this.chbx_details.Checked); // не всегда работает break; case "radioButtonReverseIdentity": result += MatrixUtils.обратная_матрица_приписывание(A, this.chbx_details.Checked); break; case "radioButtonReverseTransformation": result += MatrixUtils.обратная_матрица_алгебраические_дополнения(A, this.chbx_details.Checked); break; } TexUtils.Render r1 = new TexUtils.Render(DirectoriesSettings.MatrixCalculatorPath); string[] temp = result.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); r1.StringsToHtml(temp, "калькулятора матриц"); browser_results.Navigate(String.Format("file:///{0}", r1.HtmlPath)); settings.ApplyWebBrowserStyle(browser_results); } } } }
public void Run() { //root_folders //получаем список директорий string[] root_folders = Directory.GetDirectories(path); foreach (string root_folder in root_folders) { string current = root_folder.Split(Path.DirectorySeparatorChar).Last(); string full = Path.Combine(path, current, keyWord); //full=тема/тесты/ if (Directory.EnumerateFileSystemEntries(root_folder).Any() && Directory.Exists(full) && Directory.EnumerateFileSystemEntries(full).Any()) { //каталог не пустой и в нём есть папка "тесты", которая тоже не пуста string[] folders = Directory.GetDirectories(full); foreach (string folder in folders) { if (Directory.EnumerateFileSystemEntries(folder).Any()) { //в тестах нашёлся непустой подкаталог //получаем список файлов string[] files = Directory.GetFiles(folder); string temp = ""; int file_lines = 0; List<Object> answers = new List<Object>(); try { double obj = 0; using (StreamReader reader = new StreamReader(Path.Combine(folder, "ответы.txt"), System.Text.Encoding.GetEncoding("windows-1251"), true)) while ((temp = reader.ReadLine()) != null) { if (Double.TryParse(temp, out obj)) answers.Add(obj); else answers.Add(temp); file_lines++; } } catch(Exception e) { Logs.WriteLine("В теме '" + current + "в тесте " + folder.Split(Path.DirectorySeparatorChar).Last() + " файл ответов был не найден или содержал ошибки. Подробности: "+e.Message); continue; } if (files.Length - 1 == file_lines) { //отрендерить вопросы TexUtils.Render render = new TexUtils.Render(""); foreach (string file in files) if (Path.GetExtension(file) == ".tex") { string fulloutput = Path.Combine(savepath, current, keyWord, folder.Split(Path.DirectorySeparatorChar).Last(),Path.GetFileNameWithoutExtension(file)); //MessageBox.Show(fulloutput); System.IO.Directory.CreateDirectory(fulloutput); render.SetDirectory = fulloutput; render.TexToHTML(file); render.Reset(); } //запись бинарного файла ответов FileStream fs = new FileStream(Path.Combine(savepath, current, keyWord, folder.Split(Path.DirectorySeparatorChar).Last(), "answers.dat"), FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); try { formatter.Serialize(fs, answers); } catch (SerializationException e) { Logs.WriteLine("Ошибка сериализации. Подробности: " + e.Message); throw; } finally { fs.Close(); } } else Logs.WriteLine("В теме '" + current + "' в папке '" + keyWord + "' количество вопросов и ответов не совпадают. Проверьте пустые строки в конце файла."); } } } else { Logs.WriteLine("В теме '" + current + "' папка '" + keyWord + "' оказалась пустой"); } } }