Cod sursa(job #1970083)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 18 aprilie 2017 21:03:20
Problema Algoritmul lui Gauss Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <cmath>
#include <iomanip>

using namespace std;

ifstream f("gauss.in");
ofstream g("gauss.out");

const double E = 1e-8;
int n, m, i, j, w;
int p[303];
double mat[303][303], aux, sol[303];

int main() {
    f >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m+1; j++)
            f >> mat[i][j];
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++)
            if (fabs(mat[i][j]) >= E) break;
        if (j == m+1) {
            g << "Imposibil";
            return 0;
        }
        if (j == m+2) continue;
        p[i] = j;
        for (j = 1; j <= n; j++)
            if (i != j && fabs(mat[j][p[i]]) >= E) {
                aux = mat[j][p[i]]/mat[i][p[i]];
                for (w = 1; w <= m+1; w++)
                    mat[j][w] -= aux * mat[i][w];
            }
    }
    for (i = 1; i <= n; i++)
        if (p[i])
            sol[p[i]] = mat[i][m+1]/mat[i][p[i]];
    for (i = 1; i <= m; i++)
        g << fixed << setprecision(10) << sol[i] << ' ';
    return 0;
}