Pagini recente » Cod sursa (job #1460627) | Cod sursa (job #3180262) | Cod sursa (job #1455324) | Cod sursa (job #1235576) | Cod sursa (job #1075782)
#include<fstream>
#include<iomanip>
#define N 330
#define eps 0.0000001
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m,i,j,k,p,l;
double x[N],a[N][N];
int main()
{
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
for(j=1;j<=m+1;++j)
{
scanf("%lf",&a[i][j]);
}
for(i=1,j=1;i<=n;++i,++j)
{
for(k=i;k<=m;++k)
if(a[k][j]<-eps||a[k][j]>eps)
{
break;
}
if(k>m)
{
--i;
continue;
}
if(k!=i)
for(p=1;p<=m+1;++p)
swap(a[i][p],a[k][p]);
for(p=j+1;p<=m+1;++p)
a[i][p]/=a[i][j];
a[i][j]=1;
for(l=i+1;l<=n;++l)
{
for(p=j+1;p<=m+1;++p)
a[l][p]=a[l][p]-a[l][j]*a[i][p];
a[l][j]=0;
}
}
for(i=n;i;--i)
for(j=1;j<=m+1;++j)
if(a[i][j]<-eps||a[i][j]>eps)
{
if(j==m+1)
{
printf("Imposibil\n");
return 0;
}
x[j]=a[i][m+1];
for(k=j+1;k<=m;++k)
x[j]-=x[k]*a[i][k];
break;
}
for(i=1;i<=m;++i)
printf("%.8lf ",x[i]);
return 0;
}