Pagini recente » Cod sursa (job #1665215) | Cod sursa (job #231622) | Cod sursa (job #1067703) | Cod sursa (job #2827786) | Cod sursa (job #2107311)
#include <bits/stdc++.h>
#define MaxN 301
#define EPS 0.0000001
using namespace std;
double A[MaxN+1][MaxN+1];
double X[MaxN+1];
int main(){
FILE* fin = fopen("gauss.in","r");
FILE* fout = fopen("gauss.out","w");
int i,j,k,s,N,M;
fscanf(fin,"%d %d",&N,&M);
for(i = 1; i <= N; ++i)
for(j = 1; j <= M+1; ++j)
fscanf(fin,"%lf",&A[i][j]);
for(i = j = 1; i <= N && j <= M; )
{
for(k = i; k <= N; ++k)
if(fabs(A[k][j]) > EPS) break;
if(k == N+1)
{
++j;
continue;
}
if(i != k)
for(s = 1; s <= M+1; ++s) swap(A[i][s], A[k][s]);
for(k = j+1; k <= M+1; ++k) A[i][k] /= A[i][j];
A[i][j] = 1;
for(k = i+1; k <= N; ++k)
{
for(s = j+1; s <= M+1; ++s) A[k][s] -= A[i][s] * A[k][j];
A[k][j] = 0;
}
++i, ++j;
}
for(i = N; i > 0; --i)
for(j = 1; j <= M+1; ++j)
if(fabs(A[i][j]) > EPS)
{
if(j == M+1)
{
fprintf(fout,"Imposibil\n");
return 0;
}
X[j] = A[i][M+1];
for(s = j+1; s <= M; ++s) X[j] -= A[i][s] * X[s];
break;
}
for(i = 1; i <= M; ++i) fprintf(fout,"%.8f ",X[i]);
return 0;
}