Pagini recente » Cod sursa (job #1412241) | Cod sursa (job #1966722) | Cod sursa (job #1676493) | Cod sursa (job #75430) | Cod sursa (job #1847007)
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 300 + 5;
double eps = 0.00000001;
double a[Nmax][Nmax], ans[Nmax];
int i, j, n, m, k, p[Nmax];
bool zero(double x) {
if (x > -eps && x < eps) return true;
return false;
}
int main ()
{
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for (i = 1; i <= n; ++i)
for (j = 1; j <= m + 1; ++j)
scanf("%lf ", &a[i][j]);
for (i = 1; i <= n; ++i)
{
for (j = 1; j <= m + 1 && zero(a[i][j]); ++j);
if (j == m + 1)
{
printf("Imposibil\n");
return 0;
}
p[i] = j;
for (j = 1; j <= n; ++j) {
if (i == j) continue;
double x = a[j][p[i]] / a[i][p[i]];
for (k = 1; k <= m + 1; ++k)
a[j][k] -= x * a[i][k];
}
}
for (i = 1; i <= n; ++i)
if (p[i]) ans[p[i]] = a[i][m + 1] / a[i][p[i]];
for (i = 1; i <= m; ++i)
printf("%.10f ", ans[i]);
printf("\n");
return 0;
}