Pagini recente » Cod sursa (job #756290) | Cod sursa (job #3134032) | Cod sursa (job #556146) | Cod sursa (job #2736456) | Cod sursa (job #3232057)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int n,m;
double a[305][305];
double x[305];
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m+1; j++)
fin>>a[i][j];
int i=1,j=1;
while(i<=n && j<=m)
{
int k=i;
while(k<=n && a[k][j]==0)
k++;
if(k==n+1)
{
j++;
}
else
{
if(i!=k)
{
for(int j=1; j<=m+1; j++)
swap(a[i][j],a[k][j]);
}
for(int l=j+1; l<=m+1; l++)
a[i][l]/=a[i][j];
a[i][j]=1;
for(int l=i+1; l<=n; l++)
{
for(int c=j+1; c<=m+1; c++)
a[l][c]-=a[i][c]*a[l][j];
a[l][j]=0;
}
i++;
j++;
}
}
for(int i=n; i>=1; i--)
{
int j=1;
while(j<=m+1 && a[i][j]==0)
j++;
if(j==m+2)
{
x[i]=0;
}
else
{
if(j==m+1)
{
fout<<"Imposibil\n";
return 0;
}
x[i]=a[i][m+1];
for(int jj=j+1; jj<=m; jj++)
x[i]-=x[jj]*a[i][jj];
}
}
fout<<fixed<<setprecision(10);
for(int i=1; i<=m; i++)
fout<<x[i]<<" ";
fout<<"\n";
return 0;
}