Pagini recente » Cod sursa (job #532819) | Cod sursa (job #1267241) | Istoria paginii runda/eusebiu_oji_2010_cls11-12/clasament | Cod sursa (job #3160919) | Cod sursa (job #1424041)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
#define eps ((db)0.0000000000001)
#define LE 306
#define db double
#include <iomanip>
#define cout g
bool comisie;
db a[LE][LE];
int pos[LE];
db result[LE];
bool gauss(int n,int m)
{
int nr_piv=0,i,j,t;
for(i=1; i<=m; ++i)
{
int ind_lin=0;
for(j=nr_piv+1; j<=n; ++j)
if (a[j][i]>eps||a[j][i]<-eps)
{
ind_lin=j;
break;
}
if (ind_lin==0) continue;
++nr_piv;
for(j=1; j<=m+1; ++j)
swap(a[nr_piv][j],a[ind_lin][j]);
for(j=1; j<=n; ++j)
if (j!=nr_piv)
if(a[j][i]>eps||a[j][i]<-eps)
{
db D=a[j][i]/a[nr_piv][i];
for(t=1; t<=m+1; ++t)
a[j][t]-=a[nr_piv][t]*D;
}
pos[nr_piv]=i;
}
for(i=nr_piv+1; i<=n; ++i)
if (a[i][m+1])
return false;
for(i=1; i<=nr_piv; ++i)
result[pos[i]]=a[i][m+1]/a[i][pos[i]];
return true;
}
int main()
{
int n,m,j,i;
f>>n>>m;
for(i=1; i<=n; ++i)
{
for(j=1; j<=m+1; ++j)
f>>a[i][j];
}
if (gauss(n,m)==false)
{
cout<<"Imposibil";
return 0;
}
cout<<fixed;
cout<<setprecision(10);
for(i=1; i<=m; ++i)
cout<<result[i]<<" ";
return 0;
}