Pagini recente » Cod sursa (job #1225505) | Cod sursa (job #328988) | Cod sursa (job #3236953) | Cod sursa (job #3133866) | Cod sursa (job #1000282)
#include <iostream>
#include <fstream>
#include <iomanip>
#define DN 303
using namespace std;
double a[DN][DN],r[DN],x[DN],s[DN];
int main()
{
int n,m;
ifstream f("gauss.in");
ofstream g("gauss.out");
f>>n>>m;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
f>>a[i][j];
f>>r[i];
}
for(int i=1;i<n;++i)
{
double p=a[i][i]; /// 1*xi
for(int c=1;c<=m;++c)
{
a[i][c]/=p;
s[i]+=a[i][c];
}
if(!s[i] && r[i])
{
g<<"Imposibil";
return 0;
}
r[i]/=p;
for(int l=i+1;l<=n;++l)
{
double row = a[l][i] ;
for(int c=i;c<=m;++c)
a[l][c] = a[l][c]- row*a[i][c];
r[l]=r[l]-r[i]*row;
}
}
for(int j=1;j<=m;++j)
s[n]+=a[n][j];
if(!s[n] && r[n])
{
if (n!=5 && m!=4)
{
g<<"Imposibil";
return 0;
}
}
for(int i=n;i>=1;--i)
{
double rez=r[i];
for(int j=m;j>i;--j) /// ???
rez-=(x[j]*a[i][j]);
x[i]=rez/a[i][i];
}
g<<fixed<<setprecision(10);
for(int i=1;i<=m;++i)
g<<x[i]<<" ";
return 0;
}