Pagini recente » Cod sursa (job #550390) | Cod sursa (job #1264065) | Cod sursa (job #2678118) | Cod sursa (job #975319) | Cod sursa (job #1000260)
#include <iostream>
#include <fstream>
#include <iomanip>
#define DN 303
using namespace std;
double a[DN][DN],r[DN],x[DN];
int main()
{
int n,m;
ifstream f("gauss.in");
ofstream g("gauss.out");
f>>n>>m;
/*if(m>n)
{
g<<"Imposibil";
return 0;
}*/
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,cout<<endl)
for(int j=1;j<=m;++j)
cout<<a[i][j]<<" ";
cout<<endl;cout<<endl;cout<<endl;*/
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;
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;
}
///DEBUG
/*for(int i=1;i<=n;++i,cout<<endl)
for(int j=1;j<=m;++j)
cout<<a[i][j]<<" ";
cout<<endl;cout<<endl;cout<<endl;*/
}
for(int i=n;i>=1;--i)
{
double rez=r[i];
for(int j=n;j>i;--j)
rez-=(x[j]*a[i][j]);
x[i]=rez/a[i][i];
}
/* for(int i=1;i<=n;++i,cout<<endl)
for(int j=1;j<=m;++j)
cout<<a[i][j]<<" ";*/
g<<fixed<<setprecision(10);
for(int i=1;i<=n;++i)
g<<x[i]<<" ";
return 0;
}