Pagini recente » Cod sursa (job #1210232) | Cod sursa (job #1342892) | Cod sursa (job #1310412) | Cod sursa (job #1792267) | Cod sursa (job #822616)
Cod sursa(job #822616)
#include <fstream>
#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;
const double eps = 1e-9;
int N, M;
int main() {
ifstream cin("gauss.in");
ofstream cout("gauss.out");
cin >> N >> M;
if (M > N) {
cout << "Imposibil";
return 0;
}
vector<vector<double> > A(N, vector<double> (M + 1, 0));
for (int i = 0; i < N; i++) {
for (int j = 0; j <= M; j++) {
cin >> A[i][j];
}
}
for (int i = 0; i < N; i++) {
int j = i;
for (; j < N; j++) {
if (A[j][i] < -eps || eps < A[j][i]) {
break;
}
}
if (j == N) {
cout << "Imposibil";
return 0;
}
A[i].swap(A[j]);
double pivot = A[i][i];
for (int j = 0; j <= M; j++) {
A[i][j] /= pivot;
}
for (int j = 0; j < N; j++) {
if (i != j) {
double factor = -A[j][i];
for (int k = 0; k <= M; k++) {
A[j][k] += factor * A[i][k];
}
}
}
}
for (int i = 0; i < N; i++) {
cout << fixed << setprecision(8) << A[i][M] << " ";
}
return 0;
}