Pagini recente » Cod sursa (job #2123571) | Cod sursa (job #26206) | Cod sursa (job #864900) | Cod sursa (job #1597577) | Cod sursa (job #609035)
Cod sursa(job #609035)
#include <fstream>
#define EPS 0.0000001
using namespace std;
ifstream f("gauss.in");
ofstream o("gauss.out");
int n,m,i,j,k,p;
double a[301][305],x[301],val,aux;
int main(void)
{
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m+1;j++)
f>>a[i][j];
for (i=1,j=1;i<=n && j<=m;)
{
k=i;
while (a[k][j]>-EPS && a[k][j]<EPS && k<=n) k++;
if (k>n) {j++; continue;}
if (k!=i)
{
for (p=1;p<=m+1;p++)
{aux=a[i][p]; a[i][p]=a[k][p]; a[k][p]=aux;}
}
for (p=j+1;p<=m+1;p++)
a[i][p]/=a[i][j];
a[i][j]=1;
for (k=i+1;k<=n;k++)
{
for (p=j+1;p<=m+1;p++)
a[k][p]-=a[k][j]*a[i][p];
a[k][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) {o<<"Imposibil\n"; return 0;}
x[j]=a[i][m+1];
for (k=m;k>j;k--)
x[j]-=a[i][k]*x[k];
break;
}
}
o<<fixed;
for (i=1;i<=m;i++)
o<<x[i]<<" ";
o<<"\n";
o.close();
return 0;
}