This repository has been archived on 2026-07-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

66 lines
1.5 KiB
C
Executable File

/*
20.Вычислить корни СЛАУ через определители
*/
#include <stdio.h>
#include <string.h>
#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;
}