Pagini recente » Cod sursa (job #1561989) | Cod sursa (job #2315236) | Cod sursa (job #1469903) | Cod sursa (job #2936672) | Cod sursa (job #1149982)
#include <fstream>
#include <iomanip>
#define NMax 305
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int N,M;
double A[NMax][NMax],X[NMax];
void Read()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
for(int j=1;j<=M+1;j++)
fin>>A[i][j];
}
void Solve()
{
int i,j;
i=1;j=1;
while(i<=N&&j<=M)
{
int k;
for(k=i;!A[k][i]&&k<=N;k++);
if(k!=i)
swap(A[i],A[k]);
if(k==N+1)
{
j++;
continue;
}
for(int l=j+1;l<=M+1;l++)
A[i][l]/=A[i][j];
A[i][j]=1;
for(int k=i+1;k<=N;k++)
for(int l=j+1;l<=M+1;l++)
A[k][l]-=A[i][l]*A[k][j];
i++;j++;
}
for(int i=N;i>0;i--)
{
double S=0;
for(int j=i+1;j<=M;j++)
{
S+=A[i][j]*X[j];
}
X[i]=(A[i][M+1]-S)/A[i][i];
}
}
void Print()
{
for(int i=1;i<=N;i++)
fout<<fixed<<setprecision(10)<<X[i]<<" ";
fout<<"\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}