Pagini recente » Cod sursa (job #2161250) | Cod sursa (job #2495073) | Cod sursa (job #3257672) | Cod sursa (job #107760) | Cod sursa (job #1473015)
#include <stdio.h>
#define MAX 305
int n, m, i, j, k;
double a[MAX][MAX], x[MAX], imp, rep;
int main(){
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 1; i <= n; i++)
for(j = 1; j <= m + 1; j++)
scanf("%lf", &a[i][j]);
for(j = 1; j <= m; j++){
i = j;
while(!a[i][j] && i <= n)
i++;
if(i > n)
continue;
if(i != j)
for(k = j; k <= m + 1; k++){
a[i][k] = a[i][k] + a[j][k];
a[j][k] = a[i][k] - a[j][k];
a[i][k] = a[i][k] - a[j][k];
}
imp = a[j][j];
for(k = j; k <= m + 1; k++)
a[j][k] /= imp;
for(i = j + 1; i <= n; i++){
rep = a[i][j];
for(k = j; k <= m + 1; k++)
a[i][k] -= rep * a[j][k];
}
}
for(i = n; i > m; i--)
if((int)(1000000 * a[i][m + 1])){
printf("Imposibil\n");
return 0;
}
for(i = m; i > 0; i--){
x[i] = a[i][m + 1];
for(j = i + 1; j <= m; j++)
x[i] -= a[i][j] * x[j];
}
for(i = 1; i <= m; i++)
printf("%.10lf ", x[i]);
return 0;
}