Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAXN 3
- #define EPS 0.0000001
- #define ABS(a) ( (a) < 0.0 ? -(a) : (a) )
- double m[MAXN+3][MAXN+3];
- void normalize()
- {
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 4; j++) {
- if (ABS(m[i][j]) < EPS) {
- m[i][j] = 0.0;
- }
- }
- }
- }
- void printMat()
- {
- normalize();
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 4; j++) {
- printf("% .3lf ", m[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- }
- void addrow(int a, int b)
- {
- for (int j = 0; j < 4; j++) {
- m[b][j] += m[a][j];
- }
- }
- void mulrow(int a, double n)
- {
- for (int j = 0; j < 4; j++) {
- m[a][j] *= n;
- }
- }
- int N;
- void solverec(int n)
- {
- if (n == N) {
- return;
- }
- for (int i = n + 1; i < N; i++) {
- mulrow(n, -m[i][n] / m[n][n]);
- printMat();
- addrow(n, i);
- printMat();
- }
- solverec(n + 1);
- }
- void divGuys() {
- for (int i = 0; i < N; i++) {
- mulrow(i, 1.0 / m[i][i]);
- }
- }
- void solverec2(int n)
- {
- if (n < 0) {
- return;
- }
- for (int i = n - 1; i >= 0; i--) {
- mulrow(n, - m[i][n] / m[n][n]);
- printMat();
- addrow(n, i);
- printMat();
- }
- solverec2(n - 1);
- }
- void solve()
- {
- N = 3;
- solverec(0);
- solverec2(N - 1);
- divGuys();
- printMat();
- }
- int main(int argc, char * argv[])
- {
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3; j++) {
- scanf("%lf", &m[i][j]);
- }
- }
- for(int i=0;i<3;++i)
- scanf("%lf",&m[i][3]);
- printMat();
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement