Archived
Работы по программированию
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user