Pagini recente » Cod sursa (job #1823448) | Cod sursa (job #221789) | Cod sursa (job #2006627) | Cod sursa (job #1501252) | Cod sursa (job #1480374)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
const int nmax = 300 + 10;
const double eps = (1e-9);
double a[nmax][nmax];
double x[nmax];
double cc;
int i , j , n , m , k , q;
double modul(double a)
{
if (a < 0) return -a;
return a;
}
int main()
{
fin >> n >> m;
for (i = 1 ; i <= n ; ++i)
for (j = 1 ; j <= m + 1 ; ++j)
fin >> a[i][j];
i = j = 1;
while (i <= n && j <= m)
{
k = i;
while (k <= n && modul(a[k][j]) < eps) ++k;
if (k == n + 1)
{
j += 1;
continue;
}
for (q = 1 ; q <= m + 1 ; ++q)
swap(a[i][q] , a[k][q]);
cc = a[i][j];
for (q = 1 ; q <= m + 1 ; ++q)
a[i][q] /= cc;
for (k = i + 1 ; k <= n ; ++k)
{
cc = a[k][j];
for (q = 1 ; q <= m + 1 ; ++q)
a[k][q] -= cc * a[i][q];
}
i += 1 , j += 1;
}
for (i = n ; i ; --i)
{
j = 1;
while (j <= m + 1 && modul(a[i][j]) < eps) j += 1;
if (j == m + 1)
{
fout << "Imposibil" << '\n';
return 0;
}
x[j] = a[i][m + 1];
for (k = j + 1 ; k <= m ; ++k)
x[j] -= x[k] * a[i][k];
}
for (i = 1 ; i <= m ; ++i)
fout << fixed << setprecision(10) << x[i] << " ";
return 0;
}