Pagini recente » Cod sursa (job #3144646) | Cod sursa (job #915274) | Cod sursa (job #946260) | Cod sursa (job #1648326) | Cod sursa (job #2041080)
#include <bits/stdc++.h>
const int N = 305;
const double eps = 1e-6;
double coef[N][N];
double x[N];
bool equalToZero(double x){
return -eps <= x && x <= eps;
}
int main()
{
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
int n, m;
scanf("%d %d", &n, &m);
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m + 1;j++){
scanf("%lf", &coef[i][j]);
}
}
int i, j;
i = 1;
j = 1;
while(i <= n && j <= m){
int k;
for(k = i;k <= n;k++){
if(equalToZero(coef[k][j]) == false){
break;
}
}
if(k == n + 1){
j++;
continue;
}
for(int l = 1;l <= m + 1;l++){
std::swap(coef[i][l], coef[k][l]);
}
for(int l = j + 1;l <= m + 1;l++){
coef[i][l] /= coef[i][j];
}
coef[i][j] = 1;
for(int u = i + 1;u <= n;u++){
for(int l = j + 1;l <= m + 1;l++){
coef[u][l] -= coef[u][j] * coef[i][l];
}
coef[u][j] = 0;
}
i++;
j++;
}
for(int i = n;i > 0;i--){
for(int j = 1;j <= m + 1;j++){
if(equalToZero(coef[i][j]) == false){
if(j == m + 1){
printf("Imposibil");
return 0;
}
x[j] = coef[i][m + 1];
for(int l = j + 1;l <= m;l++){
x[j] -= x[l] * coef[i][l];
}
break;
}
}
}
for(int i = 1;i <= m;i++){
printf("%.8lf ", x[i]);
}
return 0;
}