Pagini recente » Cod sursa (job #824929) | Cod sursa (job #2908912) | Cod sursa (job #556200) | Cod sursa (job #775019) | Cod sursa (job #2086205)
#include <fstream>
#include <iomanip>
#define ver 0.000000001
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int n,m,i,j,x,y,t,ok;
double a[302][302], sol[302],aux;
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
fin>>a[i][j];
x=1;y=1;
while(x<=n&&y<=m)
{
for(i=x;i<=n;i++)
if(a[i][y]!=0)
break;
if(i==n+1)
{
y++;
continue;
}
if(i!=x)
for(j=1;j<=m+1;j++)
{
aux=a[x][j];
a[x][j]=a[i][j];
a[i][j]=aux;
}
for(j=y+1;j<=m+1;j++)
a[x][j]/=a[x][y];
a[x][y]=1;
for(i=x+1;i<=n;i++)
{
for(j=y+1;j<=m+1;j++)
a[i][j]-=a[x][j]*a[i][y];
a[i][y]=0;
}
x++;y++;
}
for(i=n;i>=1;i--)
{
for(j=1;j<=m+1;j++)
if(a[i][j]<-ver||a[i][j]>ver)
break;
if(j==m+2)
continue;
if(j==m+1)
{
ok=-1;
break;
}
sol[j]=a[i][m+1];
for(t=j+1;t<=m;t++)
sol[j]-=sol[t];
}
if(ok==-1)
fout<<"Imposibil";
else
for(i=1;i<=m;i++)
fout<<setprecision(10)<<fixed<<sol[i]<<" ";
fin.close();
fout.close();
return 0;
}