Pagini recente » Cod sursa (job #2408823) | Cod sursa (job #470359) | Cod sursa (job #2783395) | Cod sursa (job #2468988) | Cod sursa (job #1462762)
#include <fstream>
#include <iomanip>
#include <cmath>
#define Nmax 305
#define eps 0.00000001
using namespace std;
double a[Nmax][Nmax],Sol[Nmax];
int n,m,nr[Nmax];
inline void SwapL(int l1, int l2)
{
if(l1==l2) return;
for(int i=1;i<=m+1;++i) swap(a[l1][i],a[l2][i]);
}
int main()
{
int i,j,k;
double rap;
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=j=1;
while(i<=n && j<=m)
{
for(k=i;k<=n && fabs(a[k][j])<=eps;++k);
if(k==n+1)
{
++j; continue;
}
SwapL(i,k);
for(k=1;k<=n;++k)
{
if(k==i) continue;
rap=-(a[k][j]/a[i][j]);
for(int col=1;col<=m+1;++col) a[k][col]+=rap*a[i][col];
}
nr[i]=j;
++i; ++j;
}
for(i=1;i<=n;++i)
{
for(j=1;j<=m+1 && fabs(a[i][j])<=eps;++j);
if(j==m+1)
{
cout<<"Imposibil\n"; return 0;
}
if(nr[i]) Sol[nr[i]]=a[i][m+1]/a[i][nr[i]];
}
cout<<setprecision(10)<<fixed;
for(i=1;i<=m;++i) cout<<Sol[i]<<" ";
cout<<"\n";
return 0;
}