Pagini recente » Cod sursa (job #1530562) | Cod sursa (job #1451971)
#include <cstdio>
#define DIM 309
using namespace std ;
int p[DIM], N, M;
double sol[DIM], A[DIM][DIM];
const double eps = 1e-8;
double abs(double x){
if(x<0)
return -x;
return x;
}
int main(){
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
scanf("%d%d", &N, &M);
for(int i=1;i<=N;i++)
for(int j=1;j<=M+1;j++)
scanf("%lf", &A[i][j]);
for(int i=1;i<=N;i++){
p[i]=0;
for(int j=1;j<=M+1;j++)
if(abs(A[i][j])>eps){
p[i]=j;
break;
}
if(p[i]==M+1){
printf("Imposibil\n");
return 0;
}
if(p[i]==0)
continue;
for(int j=1;j<=N;j++)
if(j != i && abs(A[j][p[i]]) > eps){
double rap = (double)A[j][p[i]] / A[i][p[i]];
for(int k=1;k<=M+1;k++)
A[j][k] = (double) A[j][k] - A[i][k] * rap;
}
}
for(int i=1;i<=N;i++)
if(p[i])
sol[p[i]] = (double) A[i][N+1] / A[i][p[i]];
for(int i=1;i<=N;i++)
printf("%.10lf ", sol[i]);
printf("\n");
return 0;
}