Pagini recente » Cod sursa (job #433484) | Cod sursa (job #1116896) | Cod sursa (job #2696907) | Cod sursa (job #2388266) | Cod sursa (job #2640910)
#include <bits/stdc++.h>
#define msj "Imposibil\n"
using namespace std;
ifstream in("gauss.in");
ofstream out("gauss.out");
typedef long double ld;
ld eps=0.0001;
ld a[305][305];
ld x[305];
int main()
{
int n,m;
in>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m+1;++j)
in>>a[i][j];
int i=1,j=1;
while(i<=n and j<=m)
{
int x=i;
while(x<=n and abs(a[x][j])<=eps)
++x;
if(x>n) {++j; continue;}
for(int r=1;r<=m+1;++r)
swap(a[i][r],a[x][r]);
ld imp=a[i][j];
for(int r=1;r<=m+1;++r)
a[i][r]/=imp;
for(int u=i+1;u<=n;++u)
{
imp=a[u][j];
for(int r=1;r<=m+1;++r)
a[u][r]-=imp*a[i][r];
}
++i; ++j;
}
int p;
for(int i=n;i>=1;--i)
{
p=1;
while(p<=m and abs(a[i][p])<=eps)
++p;
if(p==m+1 and abs(a[i][m+1])>eps) {out<<msj;return 0;}
x[p]=a[i][m+1];
for(int j=p+1;j<=m;++j)
x[p]-=x[j]*a[i][j];
}
for(int i=1;i<=m;++i)
out<<fixed<<setprecision(10)<<x[i]<<' ';
return 0;
}