Esempio n. 1
0
        //Генерирует первую матрицу-------------------------------------
        public void Btn_GenMatr1_Click(object sender, RoutedEventArgs e)
        {
            Lbl_1_Error.Visibility = Visibility.Hidden;             //Скрывает сообщение об ошибке, т.к. ошибка ещё не случилась

            try                                                     //Чтобы не вылетало при создании матрицы
            {
                int m = Convert.ToInt32(Tbx_Matrix1_M.Text);        //m и n - размеры матрицы, берём String значения из TextBox и конвертируем их в Int
                int n = Convert.ToInt32(Tbx_Matrix1_N.Text);
                MathNewLib.Matrix M1 = new MathNewLib.Matrix(m, n); //Создаём матрицу (m,n)

                int min = Convert.ToInt32(Tbx_Matrix1_Min.Text);    //max и min - диапазон случайных значений для элементов матрицы
                int max = Convert.ToInt32(Tbx_Matrix1_Max.Text);
                M1.Random(min, max);                                //Заполняем матрицу случайными элементами из диапазона (min,max)

                Matrix1 = M1;                                       //Отправляем матрицу в Matrix1, которая видна на всей форме (Чтобы потом её использовать для вычислений, которые производятся в коде на другой кнопке)

                LoadMatrixToDataGrid(M1, DtGrd_1);                  //Метод для загрузки матрицы в DataGrid (M1 - матрица, DtGrd_1 - DataGrid)
                try
                {
                    LoadDetToLabel(M1.CalculateDeterminant(), lbl_Det); //Пробуем рассчитать определитель для матрицы
                }
                catch (Exception)
                {
                    lbl_Det.Content = "Определитель: " + "Нельзя посчитать"; //Если не получилось, значит матрица не квадратная
                }
            }
            catch //Если произошли ошибки, то показать сообщение об ошибке при создании матрицы
            {
                Lbl_1_Error.Visibility = Visibility.Visible;
                DtGrd_1.ItemsSource    = " ";
            }
        }
Esempio n. 2
0
        public void Btn_GenMatr2_Click(object sender, RoutedEventArgs e)
        {
            Lbl_2_Error.Visibility = Visibility.Hidden;

            try
            {
                int m = Convert.ToInt32(Tbx_Matrix2_M.Text);
                int n = Convert.ToInt32(Tbx_Matrix2_N.Text);
                MathNewLib.Matrix M2 = new MathNewLib.Matrix(m, n);

                int min = Convert.ToInt32(Tbx_Matrix2_Min.Text);
                int max = Convert.ToInt32(Tbx_Matrix2_Max.Text);

                M2.Random(min, max);
                Matrix2 = M2;

                LoadMatrixToDataGrid(M2, DtGrd_2);
                try
                {
                    LoadDetToLabel(M2.CalculateDeterminant(), lbl_Det_2);
                }
                catch (Exception)
                {
                    lbl_Det_2.Content = "Определитель: " + "Нельзя посчитать";
                }
            }
            catch
            {
                Lbl_2_Error.Visibility = Visibility.Visible;
                DtGrd_2.ItemsSource    = " ";
            }
        }
Esempio n. 3
0
 private void Btn_GenMatr3_BmulA_Click(object sender, RoutedEventArgs e)
 {
     Lbl_3_Error.Visibility = Visibility.Hidden;
     try
     {
         Matrix3 = Matrix2 * Matrix1;
         LoadMatrixToDataGrid(Matrix3, DtGrd_3);
         try
         {
             LoadDetToLabel(Matrix3.CalculateDeterminant(), lbl_Det_3);
         }
         catch (Exception)
         {
             lbl_Det_3.Content = "Определитель: " + "Нельзя посчитать";
         }
     }
     catch (Exception)
     {
         Lbl_3_Error.Visibility = Visibility.Visible;
         DtGrd_3.ItemsSource    = " ";
     }
 }
Esempio n. 4
0
 //Складывает 2 матрицы
 private void Btn_GenMatr3_Plus_Click(object sender, RoutedEventArgs e)
 {
     Lbl_3_Error.Visibility = Visibility.Hidden;
     try //Попытка сложить две матрицы
     {
         Matrix3 = Matrix1 + Matrix2;
         LoadMatrixToDataGrid(Matrix3, DtGrd_3);
         try
         {
             LoadDetToLabel(Matrix3.CalculateDeterminant(), lbl_Det_3);
         }
         catch (Exception)
         {
             lbl_Det_3.Content = "Определитель: " + "Нельзя посчитать";
         }
     }
     catch (Exception) //Исключение случится, если матрицы не одинакового размера
     {
         Lbl_3_Error.Visibility = Visibility.Visible;
         DtGrd_3.ItemsSource    = " ";
     }
 }
Esempio n. 5
0
 //Умнножает первую матрицу на число N
 private void Btn_GenMatr3_AmulN_Click(object sender, RoutedEventArgs e)
 {
     Lbl_3_Error.Visibility = Visibility.Hidden;
     try
     {
         double Number = Convert.ToDouble(Tbx_Matrix3_Nmul.Text); //Получаем число N из текстбокса
         Matrix3 = Matrix1 * Number;
         LoadMatrixToDataGrid(Matrix3, DtGrd_3);
         try
         {
             LoadDetToLabel(Matrix3.CalculateDeterminant(), lbl_Det_3);
         }
         catch (Exception)
         {
             lbl_Det_3.Content = "Определитель: " + "Нельзя посчитать";
         }
     }
     catch (Exception)
     {
         Lbl_3_Error.Visibility = Visibility.Visible;
         DtGrd_3.ItemsSource    = " ";
     }
 }
Esempio n. 6
0
        //Метод для загрузки матрицы в DataGrid
        void LoadMatrixToDataGrid(MathNewLib.Matrix data, DataGrid DG)
        {
            double[,] _dataArray;        //Временная матрица
            DataView _dataView;          //Сюда в конце загрузится матрица и мы сможем подключить её к DataGrid.ItemSource

            _dataArray = data.GetData(); //Передаём элементы матрицы во временную матрицу

            /*Локальные переменные можно объявлять без указания конкретного типа.
             * Ключевое слово VAR указывает, что компилятор должен вывести тип переменной
             * из выражения справа от оператора инициализации.
             */
            var array   = _dataArray;
            var rows    = array.GetLength(0);
            var columns = array.GetLength(1);

            var Dt = new DataTable(); //Создастся таблица с элементами матрицы, которая загрузится в DataView

            // Создаются столбцы с названиями "1", "2", "3", ...
            for (var c = 0; c < columns; c++)
            {
                Dt.Columns.Add(new DataColumn((c + 1).ToString())); //Добавляем новый столбец в DataTable
            }
            // Создаются и заполняются данными строки
            for (var r = 0; r < rows; r++)
            {
                var newRow = Dt.NewRow();
                for (var c = 0; c < columns; c++)
                {
                    newRow[c] = array[r, c];
                }
                Dt.Rows.Add(newRow); //Добавляем новую строчку в DataTable
            }
            _dataView = Dt.DefaultView;

            DG.ItemsSource = _dataView; //Теперь матрица загружена в DataGrid
        }