Pagini recente » Cod sursa (job #2892827) | Cod sursa (job #1908926) | Cod sursa (job #1442665) | Cod sursa (job #1433506) | Cod sursa (job #1513221)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 300 + 10;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
double a[nmax][nmax];
int i , j , n , m , w , k;
int p[nmax];
double c , x[nmax];
bool zero(double x)
{
double eps = 1e-9;
if (-eps < x && x < eps) return 1;
return 0;
}
int main()
{
fin >> n >> m;
for (i = 1 ; i <= n ; ++i)
for (j = 1 ; j <= m + 1 ; ++j)
fin >> a[i][j];
for (i = 1 ; i <= n ; ++i)
{
w = 0;
for (j = 1 ; j <= m + 1 ; ++j)
{
if (zero(a[i][j])) continue;
w = j;
break;
}
if (w == 0) continue;
if (w == m + 1)
{
fout << "Imposibil" << '\n';
return 0;
}
for (j = 1 ; j <= n ; ++j)
if (i - j)
{
if (zero(a[j][w])) continue;
c = a[j][w] / a[i][w];
for (k = 1 ; k <= m + 1 ; ++k)
a[j][k] -= a[i][k] * c;
}
p[i] = w;
}
for (i = 1 ; i <= m ; ++i)
{
w = p[i];
if (w) x[w] = a[i][m + 1] / a[i][w];
}
for (i = 1 ; i <= m ; ++i)
fout << fixed << setprecision(12) << x[i] << '\n';
return 0;
}