Exemple #1
0
        // calculateButton кнопка перехода к 1 части решения
        private void calculateButton_Click(object sender, RoutedEventArgs e)
        {
            message.Content        = "";
            message2.Content       = "";
            messageAnswer.Content  = "";
            messageAnswer2.Content = "";
            // заполнить массивы с коэф-ми цел. ф-ии и условий
            LinearProgrammingProblem.ReadTextGrid(this, lpp.matrix1, lpp.matrix2, lpp.matrixG, lpp.matrixGFlag);
            // запомнить min или max ищем
            int      columns1 = grid1.ColumnDefinitions.Count;
            ComboBox cB       = (ComboBox)grid1.Children[columns1 - 1];

            lpp.extremum = (string)cB.SelectionBoxItem;
            // проверка ранга
            GaussMethod MatrixsG = new GaussMethod(lpp.matrix2.GetLength(0), lpp.matrix2.GetLength(1), lpp.matrix2);

            if (MatrixsG.Rank == MatrixsG.m)
            {
                // очистить матрицы симпл. метода
                ClearSM();
                // скрыть/ сделать недоступными кнопки навигации
                Display.ChangePropertiesButton_EnabledFalse_1(this);
                Display.ChangePropertiesButton_VisibilityCollapsed_2(this);
                // очистить для новых записей
                ClearMAB();
                ClearG();
                // 1 часть Гаусс/ мет иск. баз.
                switch (selectedMethod)
                {
                case "Gauss":
                    CalculateG();
                    break;

                case "MAB":
                    CalculateMAB();
                    break;
                }
            }
            else
            {
                MessageBox.Show("ошибка: условий больше, чем требуется");
            }
        }
Exemple #2
0
        // автоматическое сохранение задачи (в меню пункт menuItemSave),
        // в случае необходимости раскомментировать
        //
        //private void menuItemSave_Click(object sender, RoutedEventArgs e)
        //{
        //    List<string> tasks = SaveTask();
        //    // добавить к имени дату для уникальности
        //    string dateTime = DateTime.Now.ToString("_yyyyMMdd_HHmmss");
        //    // сохранить
        //    File.WriteAllLines((Directory.GetCurrentDirectory() + "/tasks/task" + dateTime + ".txt"), tasks);
        //    MessageBox.Show("Задача сохранена под именем\ntask" + dateTime);
        //}


        // для сохранения задачи
        private List <string> SaveTask()
        {
            List <string> tasks = new List <string>();

            Fraction[,] matrix1Save;
            Fraction[,] matrix2Save;
            Fraction[,] matrixGSave;
            bool[,] matrixGFlagSave;
            String extremumSave = "";

            // размер матрицы
            int m1rows    = 1;
            int m1columns = 1;
            int m2rows    = 1;
            int m2columns = 1;

            if (comboBoxColumn != null)
            {
                m2columns = comboBoxColumn.SelectedIndex + 2;
                m1columns = m2columns;
            }
            if (comboBoxRow != null)
            {
                m2rows = comboBoxRow.SelectedIndex + 1;
            }
            // создать матрицу
            matrix1Save     = new Fraction[m1columns, m1rows];
            matrix2Save     = new Fraction[m2columns, m2rows];
            matrixGSave     = new Fraction[m1columns, m1rows];
            matrixGFlagSave = new bool[m1columns, m1rows];
            // заполнить массивы с коэф-ми цел. ф-ии и условий
            LinearProgrammingProblem.ReadTextGrid(this, matrix1Save, matrix2Save, matrixGSave, matrixGFlagSave);
            // запомнить min или max ищем
            int      columns1 = grid1.ColumnDefinitions.Count;
            ComboBox cB       = (ComboBox)grid1.Children[columns1 - 1];

            extremumSave = (string)cB.SelectionBoxItem;
            // заполнить список строк задачи
            FullTasks(tasks, matrix1Save, matrix2Save, matrixGSave, extremumSave, m1rows, m1columns, m2rows, m2columns);
            return(tasks);
        }