Pagini recente » Cod sursa (job #2831284) | Cod sursa (job #238720) | Cod sursa (job #1018764) | Cod sursa (job #2458169) | Cod sursa (job #1675145)
//#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdio>
#include <cmath>
using namespace std;
ifstream cin("gauss.in");
ofstream cout("gauss.out");
const double EPS = 0.000001;
double ec[305][305];
int n, m;
int used[305];
bool lin[305];
int main() {
cin>>n>>m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m + 1; ++j) {
cin>>ec[i][j];
}
}
for (int i = 1; i <= m; ++i) {
int rez = -1;
for (int j = 1; j <= n; ++j) {
if (fabs(ec[j][i]) > EPS && !lin[j]) {
if (rez == -1 || fabs(ec[j][i]) > fabs(ec[rez][i])) {
rez = j;
}
}
}
if (rez == -1) {
continue;
}
lin[rez] = 1;
used[i] = rez;
double factor = ec[rez][i];
for (int j = 1; j <= m + 1; ++j) {
ec[rez][j] /= factor;
}
for (int j = 1; j <= n; ++j) {
if (rez != j) {
double factor = ec[j][i];
for (int k = 1; k <= m + 1; ++k) {
ec[j][k] -= ec[rez][k] * factor;
}
}
}
}
for (int i = 1; i <= n; ++i) {
if (fabs(ec[i][m + 1]) > EPS) {
bool gasit = 0;
for (int j = 1; j <= m; ++j) {
if (fabs(ec[i][j]) > EPS) {
gasit = 1;
break;
}
}
if (!gasit) {
cout<<"Imposibil\n";
return 0;
}
}
}
FILE* h = fopen("gauss.out", "w");
for (int i = 1; i <= m; ++i) {
if (used[i] == 0) {
fprintf(h, "0.0000000000 ");
} else {
fprintf(h, "%.10lf ", ec[used[i]][m + 1]);
}
}
cout<<"\n";
return 0;
}