Pagini recente » Cod sursa (job #1513524) | Cod sursa (job #1523357) | Cod sursa (job #1435669) | Cod sursa (job #1548264) | Cod sursa (job #1575583)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
double A[305][305],*a[305],*aux,eps=0.000000001,v,y;
int n,m,i,j,k,l,ec[305];
int main()
{
f>>n>>m;m++;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
f>>A[i][j];
a[i]=A[i];
}
for(j=1,k=1;j<m;j++)
{
for(i=k;i<=n;i++)
if(a[i][j]<-eps||a[i][j]>eps)
break;
if(i==n+1)
continue;
aux=a[i];a[i]=a[k];a[k]=aux;
ec[j]=k;v=a[k][j];a[k][j]=0;
for(i=1;i<=n;i++)
if(a[i][j]<-eps||a[i][j]>eps)
{
y=a[i][j]/v;a[i][j]=0;
for(l=j+1;l<=m;l++)
a[i][l]-=a[k][l]*y;
}
a[k][j]=v;
k++;
}
for(i=k;i<=n;i++)
if(a[i][m]<-eps||a[i][m]>eps)
{
g<<"Imposibil";
return 0;
}
for(j=1;j<m;j++)
{
if(!ec[j])
{
g<<"0.00000000000 ";
continue;
}
g<<fixed<<setprecision(10)<<a[ec[j]][m]/a[ec[j]][j]<<' ';
}
return 0;
}