コード例 #1
0
ファイル: MyMatrix.cs プロジェクト: Nerdych/matrix-solution
        public static MyMatrix <T> GenerateMatrix(int rows, int columns, Func <int, int, Random, T> f)
        {
            if (rows == 0 || columns == 0)
            {
                throw new ArgumentException("Матрица не может быть нулевого размера!");
            }
            MyMatrix <T> newMatrix = new MyMatrix <T>(rows, columns);
            Random       rnd       = new Random();

            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    newMatrix[j, i] = f(j, i, rnd);
                }
            }

            return(newMatrix);
        }
コード例 #2
0
ファイル: MyMatrix.cs プロジェクト: Nerdych/matrix-solution
        public static MyMatrix <T> operator +(MyMatrix <T> matrix1, MyMatrix <T> matrix2)
        {
            if (matrix1.xSize != matrix2.xSize || matrix1.ySize != matrix2.ySize)
            {
                throw new ArgumentException("Матрицы нельзя сложить");
            }

            MyMatrix <T> resultMatrix = new MyMatrix <T>(matrix1.xSize, matrix2.ySize);

            for (int i = 0; i < matrix1.xSize; i++)
            {
                for (int j = 0; j < matrix2.ySize; j++)
                {
                    resultMatrix[i, j] = matrix1[i, j] + matrix2[i, j];
                }
            }

            return(resultMatrix);
        }
コード例 #3
0
ファイル: MyMatrix.cs プロジェクト: Nerdych/matrix-solution
        public static MyMatrix <T> operator *(MyMatrix <T> matrix1, MyMatrix <T> matrix2)
        {
            if (matrix1.xSize != matrix2.ySize)
            {
                throw new ArgumentException("Матрицы нельзя перемножить");
            }

            MyMatrix <T> resultMatrix = new MyMatrix <T>(matrix2.xSize, matrix1.ySize);

            for (int i = 0; i < matrix1.ySize; i++)
            {
                for (int j = 0; j < matrix2.xSize; j++)
                {
                    resultMatrix[j, i] = 0;
                    for (int k = 0; k < matrix2.ySize; k++)
                    {
                        resultMatrix[j, i] += matrix1[k, i] * matrix2[j, k];
                    }
                }
            }

            return(resultMatrix);
        }