Archived
66 lines
1.5 KiB
C
Executable File
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;
|
|
} |