Pagini recente » Cod sursa (job #1661272) | Cod sursa (job #1795967) | Cod sursa (job #1041049) | Cod sursa (job #1486261) | Cod sursa (job #1706724)
#include <iostream>
//#include <fstream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
//ifstream si("gauss.in");
//ofstream so("gauss.out");
FILE* si=fopen("gauss.in","r");
FILE* so=fopen("gauss.out","w");
const double VMIN=0.00000000001;
double v[305][305];
double sol[305];
int main()
{
int n,m;
//si>>n>>m;
fscanf(si,"%i %i",&n,&m);
++m;
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
fscanf(si,"%lf",&v[i][j]);
int k,l;
i=1;
j=1;
for(;i<=n&&j<m;++j)
{
for(k=i;k<=n&&!(v[k][j]>VMIN||-v[k][j]>VMIN);++k);
if(k==n+1)
continue;
swap(v[i],v[k]);
for(l=j+1;l<=m;++l)
v[i][l]=v[i][l]/v[i][j];
v[i][j]=1;
for(k=i+1;k<=n;++k)
{
for(l=j+1;l<=m;++l)
v[k][l]=v[k][l]-v[i][l]*v[k][j];
v[k][j]=0;
}
++i;
}
/*for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
cout<<v[i][j]<<' ';
cout<<'\n';
}*/
bool bun=true;
for(i=n;i&&bun;--i)
{
for(j=1;j<=m&&!(v[i][j]>VMIN||-v[i][j]>VMIN);++j);
if(j==m)
{
bun=false;
break;
}
//cout<<i<<"->"<<j<<'\n';
sol[j]=v[i][m];
for(k=j+1;k<m;++k)
{
sol[j]-=sol[k]*v[i][k];
}
}
if(bun)
{
for(i=1;i<m;++i)
{
fprintf(so,"%.10f ",sol[i]);
}
fprintf(so,"\n");
}
else
{
fprintf(so,"Imposibil\n");
}
return 0;
}