예제 #1
0
파일: Program.cs 프로젝트: rstslv/Cramer
    private static int[] Solve(SubMatrix matrix)
    {
        int det = matrix.Det();

        if (det == 0)
        {
            throw new ArgumentException("Ответ: Определитель равен 0");
        }

        int[] answer = new int[matrix.Size];
        for (int i = 0; i < matrix.Size; i++)
        {
            matrix.ColumnIndex = i;
            answer[i]          = matrix.Det() / det;
        }
        return(answer);
    }
예제 #2
0
파일: Program.cs 프로젝트: rstslv/Cramer
        public int Det()
        {
            if (Size == 1)
            {
                return(this[0, 0]);
            }
            if (Size == 2)
            {
                return(this[0, 0] * this[1, 1] - this[0, 1] * this[1, 0]);
            }
            SubMatrix m    = new SubMatrix(this);
            int       det  = 0;
            int       sign = 1;

            for (int c = 0; c < Size; c++)
            {
                m.ColumnIndex = c;
                int d = m.Det();
                det += this[0, c] * d * sign;
                sign = -sign;
            }
            return(det);
        }