Pagini recente » Cod sursa (job #2680684) | Cod sursa (job #2472345) | Cod sursa (job #944303) | Cod sursa (job #325810) | Cod sursa (job #1489027)
//#include <iostream>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;
ifstream cin("gauss.in");
ofstream cout("gauss.out");
const int LIM=305, eps=0.0000001;
int n, m;
double mat[LIM][LIM], x[LIM];
int main()
{
cin>>n>>m;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m+1; ++j)
cin>>mat[i][j];
int i=1, j=1, k;
while(i<=n and j<=m)
{
for(k=i; k<=n; ++k)
if(fabs(mat[k][j])>eps)
break;
if(k==n+1)
{
j++;
continue;
}
if(k!=i)
for(int l=1; l<=m+1; ++l)
{
double cop=mat[i][l];
mat[i][l]=mat[k][l];
mat[k][l]=cop;
}
for(int l=j+1; l<=m+1; ++l)
mat[i][l]/=mat[i][j];
mat[i][j]=1;
for(int u=i+1; u<=n; ++u)
{
for(int l=j+1; l<=m+1; ++l)
mat[u][l]-=mat[u][j]*mat[i][l];
mat[u][j]=0;
}
i++, j++;
}
for(i=n; i>0; --i)
for(j=1; j<=m+1; ++j)
if(fabs(mat[i][j])>eps)
{
if(j==m+1)
{
cout<<"Imposibil";
return 0;
}
x[j]=mat[i][m+1];
for(k=j+1; k<=m; ++k)
x[j]-=x[k]*mat[i][k];
break;
}
cout.precision(8);
for(i=1; i<=m; ++i)
cout<<fixed<<x[i]<<' ';
return 0;
}