Pagini recente » Cod sursa (job #1880567) | Cod sursa (job #1266804) | Cod sursa (job #2674782) | Cod sursa (job #1272537) | Cod sursa (job #1222024)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 100010
int N, M;
long double A[305][305], Sol[305], X, Y;
int main() {
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
cin >> N >> M;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= M+1; j++) {
cin >> A[i][j];
}
if (N < M) {
cout << "Imposibil";
} else {
for (int k = 1; k <= min(N, M); k++) {
X = A[k][k];
for (int j = k; j <= M+1; j++) A[k][j] *= -1/X;
for (int i = k+1; i <= N; i++) {
Y = A[i][k];
for (int j = k; j <= M+1; j++) {
A[i][j] = A[i][j] * 1/Y + A[k][j];
}
}
}
for (int k = min(N, M); k >= 1; k--) {
Sol[k] = A[k][M+1];
for (int j = k+1; j <= M; j++) {
Sol[k] -= A[k][j] * Sol[j];
}
Sol[k] /= A[k][k];
}
cout << setprecision(10) << fixed;
for (int k = 1; k <= M; k++) cout << Sol[k] << " ";
}
return 0;
}