Пример #1
0
        /// <summary>
        /// Умножение двух матриц
        /// </summary>
        void Operation_4()
        {
            Console.Clear();

            Console.Write($"Введите количество строк 1-й матрицы ({minRow} - {maxRow}): ");
            string strRow_1 = Console.ReadLine();

            Console.Write($"Введите количество столбцов 1-й матрицы ({minColumn} - {maxColumn}): ");
            string strColumn_1 = Console.ReadLine();

            Console.Write($"Введите количество строк 2-й матрицы ({minRow} - {maxRow}): ");
            string strRow_2 = Console.ReadLine();

            Console.Write($"Введите количество столбцов 2-й матрицы ({minColumn} - {maxColumn}): ");
            string strColumn_2 = Console.ReadLine();

            if (dataEntryVerification(strRow_1, strColumn_1, out Row_1, out Column_1) &&
                dataEntryVerification(strRow_2, strColumn_2, out Row_2, out Column_2))
            {
                if (dataRangeCheck(minRow, maxRow, Row_1) &&
                    dataRangeCheck(minColumn, maxColumn, Column_1) &&
                    dataRangeCheck(minRow, maxRow, Row_2) &&
                    dataRangeCheck(minRow, maxRow, Column_2))
                {
                    A          = new Matrix(Row_1, Column_1);
                    B          = new Matrix(Row_2, Column_2);
                    controller = new MatrixController();

                    if (controller.MultiplicationResolution(A, B))
                    {
                        Console.WriteLine("Исходные матрицы: ");
                        A.createMatrix(-100, 100);
                        A.printMatrix();
                        B.createMatrix(-100, 100);
                        B.printMatrix();

                        Console.WriteLine("Результат умножения матриц: ");

                        //Умножение матриц стандартным методом
                        controller.Mult(A, B).printMatrix();

                        //Умножение матриц методом Винограда - Штрассена
                        //StrassenAlgorithm.Multiplication(A, B).printMatrix();
                    }
                    else
                    {
                        Console.WriteLine("Данные матрицы умножить невозможно!");
                    }
                }
                else
                {
                    Console.WriteLine("Диапазон значений не соответствует!");
                }
            }
            else
            {
                Console.WriteLine("Ошибка ввода данных!");
            }
        }
Пример #2
0
        /// <summary>
        /// Вычитание двух матриц
        /// </summary>
        void Operation_3()
        {
            Console.Clear();

            Console.Write($"Введите количество строк 1-й матрицы ({minRow} - {maxRow}): ");
            string strRow_1 = Console.ReadLine();

            Console.Write($"Введите количество столбцов 1-й матрицы ({minColumn} - {maxColumn}): ");
            string strColumn_1 = Console.ReadLine();

            Console.Write($"Введите количество строк 2-й матрицы ({minRow} - {maxRow}): ");
            string strRow_2 = Console.ReadLine();

            Console.Write($"Введите количество столбцов 2-й матрицы ({minColumn} - {maxColumn}): ");
            string strColumn_2 = Console.ReadLine();

            if (dataEntryVerification(strRow_1, strColumn_1, out Row_1, out Column_1) &&
                dataEntryVerification(strRow_2, strColumn_2, out Row_2, out Column_2))
            {
                if (dataRangeCheck(minRow, maxRow, Row_1) &&
                    dataRangeCheck(minColumn, maxColumn, Column_1) &&
                    dataRangeCheck(minRow, maxRow, Row_2) &&
                    dataRangeCheck(minRow, maxRow, Column_2))
                {
                    A          = new Matrix(Row_1, Column_1);
                    B          = new Matrix(Row_2, Column_2);
                    controller = new MatrixController();

                    if (controller.Compare(A, B))
                    {
                        Console.WriteLine("Исходные матрицы: ");
                        A.createMatrix(-100, 100);
                        A.printMatrix();
                        B.createMatrix(-100, 100);
                        B.printMatrix();

                        Console.WriteLine("Результат вычитания матриц: ");

                        controller.Sub(A, B).printMatrix();
                    }
                    else
                    {
                        Console.WriteLine("Данные матрицы вычесть невозможно!");
                    }
                }
                else
                {
                    Console.WriteLine("Диапазон значений не соответствует!");
                }
            }
            else
            {
                Console.WriteLine("Ошибка ввода данных!");
            }
        }
Пример #3
0
        /// <summary>
        /// Операция умножения матрицы на число
        /// </summary>
        void Operation_1()
        {
            Console.Clear();

            Console.Write($"Введите количество строк матрицы ({minRow} - {maxRow}): ");
            string strRow = Console.ReadLine();

            Console.Write($"Введите количество столбцов матрицы ({minColumn} - {maxColumn}): ");
            string strColumn = Console.ReadLine();

            Console.Write("Введите число: ");
            string strNumber = Console.ReadLine();

            double Number;

            if (double.TryParse(strNumber, out Number))
            {
                if (dataEntryVerification(strRow, strColumn, out Row_1, out Column_1))
                {
                    if (dataRangeCheck(minRow, maxRow, Row_1) && dataRangeCheck(minColumn, maxColumn, Column_1))
                    {
                        A          = new Matrix(Row_1, Column_1);
                        controller = new MatrixController();

                        A.createMatrix(-100, 100);
                        Console.WriteLine("Исходная матрица: ");
                        A.printMatrix();
                        Console.WriteLine($"Результат умножения матрицы на число {Number}: ");
                        controller.MatrixMultByNumber(A, Number).printMatrix();
                    }
                    else
                    {
                        Console.WriteLine("Диапазон значений не соответствует!");
                    }
                }
                else
                {
                    Console.WriteLine("Ошибка ввода данных!");
                }
            }
            else
            {
                Console.WriteLine("Ошибка ввода данных!");
            }
        }