Pagini recente » Cod sursa (job #3146786) | Cod sursa (job #951723) | Cod sursa (job #389803) | Cod sursa (job #651111) | Cod sursa (job #670159)
Cod sursa(job #670159)
#include<fstream>
#include<iomanip>
#define EPS 0.0000001
using namespace std;
int n, l, i, j, m, k, u, cif, r, d;
double x[310], a[310][310], aux, p;
int main()
{
ifstream f("gauss.in");
ofstream h("gauss.out");
f>>n>>m;
for (i=1; i<=n; ++i)
for (j=1; j<=m+1; ++j)
f>>a[i][j];
f.close();
i=1; j=1;
while(i<=n && j<=m)
{
for(k=i; k<=n; ++k)
if(a[k][j]<-EPS || a[k][j]>EPS)
break;
if(k==n+1)
{
++j;
}
if(k!=i)
for(l=1; l<=m+1; ++l)
{
aux=a[i][l];
a[i][l]=a[k][l];
a[k][l]=aux;
}
for(l=j+1; l<=m+1; ++l)
a[i][l]=double(a[i][l])/double(a[i][j]);
a[i][j]=1;
for(u=i+1; u<=n; ++u)
{
for(l=j+1; l<=m+1; ++l)
a[u][l]-=a[u][j]*a[i][l];
a[u][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)
{
h<<"Imposibil"<<'\n';
}
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)
{
if (x[i]==int(x[i]))
h<<x[i]<<".0000000000 ";
else
{
if (x[i]>0)
{
r=int(x[i]);
cif=0;
while (r>0)
{
cif++;
r=r/10;
}
}
else
{
p=-x[i];
r=int(p);
cif=0;
while (r>0)
{
cif++;
r=r/10;
}
}
d=cif+10;
h<<setprecision(d)<<x[i]<<" ";
}
}
h<<'\n';
h.close();
return 0;
}