Pagini recente » Cod sursa (job #1792682) | Cod sursa (job #1843384) | Cod sursa (job #1775956) | Cod sursa (job #1733569) | Cod sursa (job #1388351)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int NMAX=302;
const double eps=0.0000000001;
int i, j, n, m, k, l, p;
double a[NMAX][NMAX], x[NMAX];
int main()
{
ifstream cin("gauss.in");
ofstream cout("gauss.out");
cin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m+1; j++)
cin>>a[i][j];
i=1;
j=1;
while(i<=n&&j<=m)
{
for(k=i; k<=n; k++)
if(a[k][j]<-eps||a[j][k]>eps)
break;
if(k==n+1)
{
j++;
continue;
}
if(k!=i)
for(l=1; l<=m+1; l++)
swap(a[i][l],a[k][l]);
for(l=j+1; l<=m+1; l++)
a[i][l]=a[i][l]/a[i][j];
a[i][j]=1;
for(p=i+1; p<=n; p++)
{
for(l=j+1; l<=m+1; l++)
a[p][l]-=a[p][j]*a[i][l];
a[p][j]=0;
}
i++;
j++;
}
for(i=n; i>0; i--)
for(j=1; j<=m+1; j++)
if(a[i][j]>eps||a[i][j]<-eps)
{
if(j==m+1)
{
cout<<"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++)
cout<<setprecision(10)<<fixed<<x[i]<<' ';
cout<<'\n';
return 0;
}