Pagini recente » Cod sursa (job #2095467) | Cod sursa (job #1885748) | Cod sursa (job #1248106) | Cod sursa (job #896688) | Cod sursa (job #2679543)
#include <bits/stdc++.h>
#define eps 0.0000000001
#define Nmax 305
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");;
double a[Nmax][Nmax], sol[Nmax];
int n, m;
int main()
{
fin >> n >> m;
m++;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
fin >> a[i][j];
int l=1, c=1, i, j;
while(l<=n && c<m)
{
for(i=l;i<=n;i++)
if(abs(a[i][c])>eps)
break;
if(i==n+1)
{
c++;
continue;
}
if(i!=l)
for(j=c;j<=m;j++)
swap(a[l][j], a[i][j]);
for(j=c+1;j<=m;j++)
a[l][j]/=a[l][c];
a[l][c]=1;
for(i=l+1;i<=n;i++)
{
for(j=c+1;j<=m;j++)
a[i][j]-=a[l][j]*a[i][c];
a[i][c]=0;
}
l++, c++;
}
for(i=n;i>=1;i--)
{
for(j=1;j<=m;j++)
if(abs(a[i][j])>eps)
break;
if(j==m)
{
fout << "Imposibil";
return 0;
}
sol[j]=a[i][m];
for(int k=j+1;k<m;k++)
sol[j]-=sol[k]*a[i][k];
}
for(int i=1;i<m;i++)
fout << setprecision(10) << fixed << sol[i] << ' ';
return 0;
}