Cod sursa(job #2052198)

Utilizator Bodo171Bogdan Pop Bodo171 Data 30 octombrie 2017 10:42:51
Problema Algoritmul lui Gauss Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
const int nmax=305;
const double eps=0.000000001;
ifstream f("gauss.in");
ofstream g("gauss.out");
double a[nmax][nmax];
double ans[nmax];
double rap;
int p[nmax];
int n,m,i,j,idx;
void gauss()
{
    for(i=1;i<=n;i++)
    {
        while(fabs(a[i][p[i]])<eps&&p[i]<=m+1)
            p[i]++;
        if(p[i]>m+1)
            continue;
        if(p[i]==m+1)
        {
            g<<"Imposibil";
            return;
        }
        for(j=1;j<=n;j++)
            if(j!=i&&fabs(a[j][p[i]])>0)
            {
                rap=a[j][p[i]]/a[i][p[i]];
                for(idx=1;idx<=m+1;idx++)
                    a[j][idx]-=rap*a[i][idx];
                a[j][p[i]]=0;
            }
    }
    for(i=1;i<=n;i++)
        ans[p[i]]=a[i][m+1]/a[i][p[i]];
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m+1;j++)
          f>>a[i][j];
    gauss();
    for(i=1;i<=m;i++)
        g<<fixed<<setprecision(10)<<ans[i]<<' ';
    return 0;
}