Pagini recente » Cod sursa (job #461147) | Cod sursa (job #1389095) | Cod sursa (job #1527897) | Cod sursa (job #1510685) | Cod sursa (job #1122031)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f,*g;
double a[310][310];
double ans[310];
int n,m,i,j,k,w;
double er =0.001;
bool ok;
int main()
{
f=fopen("gauss.in","r");
g=fopen("gauss.out","w");
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m+1;j++)
fscanf(f,"%lf",&a[i][j]);
for (i=1,j=1;i <=n && j<=m;)
{
ok=false;
for (k=i;k<=n;k++)
if (a[k][j]<-er || er<a[k][j])
{
ok=true;
break;
}
if (ok==false)
{
j++;
continue;
}
for (w=1;w<=m+1;w++)
swap( a[i][w],a[k][w]);
for (w=m+1;w>=j;w--)
a[i][w]=(double)a[i][w]/a[i][j];
for (k=i+1;k<=n;k++)
for (w=m+1;w>=j;w--)
a[k][w]=(double)a[k][w]- ( (double)a[k][j]*a[i][w]);
i++; j++;
}
for (i=n;i>=1;i--)
for (j=1;j<=m+1;j++)
if (a[i][j] <-er || er<a[i][j])
{
if (j==m+1)
{
fprintf(g,"Imposibil");
return 0;
}
for (k=j+1;k<=m;k++)
ans[j]=(double) ans[j]-( (double)ans[k]*a[i][k]);
ans[j]=(double)ans[j]+a[i][m+1];
break;
}
for (i=1;i<=m;i++)
fprintf(g,"%.8lf ",ans[i]);
return 0;
}