Pagini recente » Cod sursa (job #2052678) | Cod sursa (job #2959047) | Cod sursa (job #2569815) | Cod sursa (job #1948453) | Cod sursa (job #3185224)
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m;
long double s[302][302], x[302];
int main() {
f >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m + 1; j++)
f >> s[i][j];
long double EPS = 1e-10;
for(int i = 1, j = 1, k; i <= n && j <= m;) {
for(k = i; k <= n; ++k)
if(s[k][j] != 0)
break;
if(k > n) ++j;
if(k != i)
for(int l = 1; l <= m + 1; ++l)
swap(s[i][l],s[k][l]);
for(k = i + 1; k <= n; ++k)
for(int l = m + 1; l >= j; --l)
s[k][l] -= ((s[k][j] * s[i][l]) / s[i][j]);
++i; ++j;
}
for(int i = n; i > 0;--i)
for(int j = 1; j <= m + 1; ++j)
if(fabs(s[i][j]) > EPS) {
if(j == m + 1) {
g << "Imposibil";
return 0;
}
x[j] = s[i][m + 1];
for(int k = j + 1; k <= m; ++k)
x[j] -= s[i][k] * x[k];
x[j]/=s[i][j];
break;
}
for(int i = 1; i <= m; i++)
g << fixed << setprecision(8) << x[i] << ' ';
return 0;
f.close();
g.close();
}