Nu aveti permisiuni pentru a descarca fisierul grader_test8.ok
Cod sursa(job #2784226)
| Utilizator | Data | 16 octombrie 2021 09:05:04 | |
|---|---|---|---|
| Problema | Algoritmul lui Gauss | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.41 kb |
//#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
long double a[305][305],ans[605];
const long double tol=1e-5;
int p[505],n,m,j;
long double fabs (long double x)
{
if(x<(long double)(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;
}
