Pagini recente » Cod sursa (job #1822379) | Cod sursa (job #972732) | Cod sursa (job #1249375)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const double eps=0.00000001;
double v[310][310],sol[310];
int main()
{
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m+1;j++) scanf("%lf",&v[i][j]);
int i=1,j=1,q;
while(i<=n && j<=m)
{
for(q=i;q<=n;q++) if(abs(v[q][j])>eps) break;
if(q==n+1) {j++;continue;}
if(q>i) for(int k=1;k<=m+1;k++) swap(v[i][k],v[q][k]);
for(q=j+1;q<=m+1;q++) v[i][q]/=v[i][j];
v[i][j]=1;
for(q=i+1;q<=n;q++)
{
for(int k=j+1;k<=m+1;k++) v[q][k]-=v[i][k]*v[q][j];
v[q][j]=0;
}
i++;j++;
}
for(i=n;i;i--)
for(j=1;j<=m+1;j++)
if(abs(v[i][j])>eps)
{
if(j==m+1)
{
printf("Imposibil");
return 0;
}
sol[j]=v[i][m+1];
for(int q=j+1;q<=m;q++) sol[j]-=v[i][q]*sol[q];
break;
}
for(i=1;i<=m;i++) printf("%.8lf ",sol[i]);
return 0;
}