Pagini recente » Cod sursa (job #2374172) | Cod sursa (job #996121) | Cod sursa (job #2181623) | Cod sursa (job #1443215) | Cod sursa (job #2712368)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int n,m;
bool use[1005];
double v[305][305],ans[1005];
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m+1;j++)
fin>>v[i][j];
int i=1;
int j=1;
while(j<=n)
{
int x=i;
while(x<=n&&v[x][j]==0)
x++;
if(x>n)
{
j++;
continue;
}
swap(v[x],v[i]);
double X=v[i][j];
for(int p=1;p<=m+1;p++)
v[i][p]/=X;
for(int u=i+1;u<=n;u++)
{
double z=v[u][j];
for(int p=1;p<=m+1;p++)
v[u][p]-=z*v[i][p];
}
i++;
j++;
}
for(i=n;i>=1;i--)
{
double suma=0;
bool found=0;
for(j=m;j>=1;j--)
{
if(v[i][j]!=0&&!use[j])
{
found=1;
use[j]=1;
ans[j]=(v[i][m+1]-suma)/v[i][j];
break;
}
else
suma+=ans[j]*v[i][j];
if(!use[j])
use[j]=1;
}
if(found==0&&v[i][m+1]!=0)
{
fout<<"Imposibil";
return 0;
}
}
for(int i=1;i<=m;i++)
fout<<fixed<<setprecision(10)<<ans[i]<<" ";
return 0;
}