Pagini recente » Statistici canciu carmen (canciu.carmen) | Cod sursa (job #477845) | Cod sursa (job #1575869) | Cod sursa (job #1259141) | Cod sursa (job #1588924)
#include <bits/stdc++.h>
#define Nmax 305
#define eps 0.000000001
using namespace std;
int n,m,solved[Nmax];
double Sol[Nmax],a[Nmax][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,t;
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(k,i);
solved[i]=j;
for(k=1;k<=n;++k)
{
if(k==i) continue;
double rap=-(a[k][j]/a[i][j]);
for(t=1;t<=m+1;++t) a[k][t]+=rap*a[i][t];
}
++i; ++j;
}
for(i=1;i<=n;++i)
{
for(j=1;j<=m && fabs(a[i][j])<=eps;++j);
if(j==m+1)
{
cout<<"Imposibil\n"; return 0;
}
}
for(i=1;i<=n;++i)
{
if(!solved[i]) continue;
Sol[solved[i]] = (a[i][m+1] / a[i][solved[i]]);
}
cout<<setprecision(10)<<fixed;
for(k=1;k<=m;++k) cout<<Sol[k]<<" ";
return 0;
}