Cod sursa(job #2781330)

Utilizator eduardmirceabraguta eduard eduardmircea Data 9 octombrie 2021 10:16:03
Problema Algoritmul lui Gauss Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
//#include <iostream>

#include <fstream>

#include <iomanip>
using namespace std;
long double a[500][500],ans[605];
const long double tol=1e-9;
int p[505],n,m,j;
long double fabs (long double x)
{
    if(x<0)return -x;
    return x;
}
ifstream in ("gauss.in");
ofstream out ("gauss.out");
int main()
{

in>>n>>m;
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m+1;j++)
    {
        in>>a[i][j];
    }
}

for(int i=1;i<=n;i++)
{
    for( j=1;j<=m+1;j++)
    {

        if(fabs(a[i][j])>tol  )break;

    }
    if(j==m+2)continue;
    if(j==m+1){out<<"Imposibil";return 0;}
    else{

        p[i]=j;

        for(j=1;j<=n;j++)
        {
            if(i!=j&& fabs( a[j][p[i]] )>tol  )
            {
                long double factor;
                factor = a[j][ p[i] ] / a[i][ p[i] ];
                    for(int k=1; k<=m+1; k++)
                    {
                        a[j][k] -= factor * a[i][k];
                    }

            }
        }


    }

}


for(int i=1;i<=n;i++)
{
if(p[i])
ans[ p[i] ]=a[i][m+1]/a[i][p[i]];

}
for(int i=1;i<=m;i++)
{
    out<<setprecision(10)<<fixed<<ans[i]<<" ";
}


    return 0;
}