Pagini recente » Cod sursa (job #3206387) | Cod sursa (job #2607618) | Cod sursa (job #2920023) | Cod sursa (job #2881920) | Cod sursa (job #2909278)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
double eps = 1e-6;
int cmp(double x, double y) {
if (x + eps < y)
return -1;
if (y + eps < x)
return 1;
return 0;
}
int main() {
ifstream cin("gauss.in");
ofstream cout("gauss.out");
int N, M; cin >> N >> M;
vector< vector<double> > A(N, vector<double>(M + 1));
for (int i = 0; i < N; ++i)
for (int j = 0; j <= M; ++j)
cin >> A[i][j];
for (int i = 0, j = 0; i < N && j < M; ++j) {
for (int k = i; k < N; ++k)
if (cmp(A[k][j], 0)) {
swap(A[k], A[i]);
break;
}
if (cmp(A[i][j], 0) == 0) continue;
for (int k = 0; k < N; ++k)
if (k != i)
for (int l = M; l >= j; --l)
A[k][l] -= A[k][j] / A[i][j] * A[i][l];
++i;
}
vector<double> answer(M, 0);
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
if (cmp(A[i][j], 0)) {
answer[j] = A[i][M] / A[i][j];
break;
}
cout.setf(ios::fixed, ios::floatfield);
cout.precision(10);
for (auto &x : answer)
cout << x << " ";
cout << "\n";
}