/* 20.Вычислить корни СЛАУ через определители */ #include #include #define N 3 #define M 4 int getDet(int (*matrix)[N]) { return matrix[0][0] * matrix[1][1] * matrix[2][2] + matrix[0][1] * matrix[1][2] * matrix[2][0] + matrix[0][2] * matrix[1][0] * matrix[2][1] - matrix[0][2] * matrix[1][1] * matrix[2][0] - matrix[0][1] * matrix[1][0] * matrix[2][2] - matrix[0][0] * matrix[1][2] * matrix[2][1]; } void setMatrixNew(int (*matrix_new)[N], int (*matrix)[M]) { for (int x = 0; x < N; x++) { for (int y = 0; y < N; y++) { matrix_new[x][y] = matrix[x][y]; } } } int getSolve(int (*matrix)[M]) { int matrix_new[N][N]; setMatrixNew(matrix_new, matrix); int X = getDet(matrix_new); if (X == 0) { puts("KOD KRASBYI!!"); return; } int x_array[N]; for (int i = N - 1; i >= 0; i--) { setMatrixNew(matrix_new, matrix); matrix_new[0][i] = matrix[0][M - 1]; matrix_new[1][i] = matrix[1][M - 1]; matrix_new[2][i] = matrix[2][M - 1]; x_array[i] = getDet(matrix_new); printf("%d\n", getDet(matrix_new)); } char current = 'x'; for (int i = 0; i < N;i++) { printf("%c = %.2lf\n", current++, (double)x_array[i]/X); } } int main() { int matrix[N][M] = {{1, 2, 3, 3}, {3, 2, 2, 3}, {3, 3, 3, 3}}; getSolve(matrix); return 0; }