Pagini recente » Cod sursa (job #1586799) | Cod sursa (job #1824344) | Cod sursa (job #1835612) | Cod sursa (job #2253469) | Cod sursa (job #1791941)
#include <iostream>
#include <fstream>
#include <iomanip>
#define NMAX 303
#define EPS 0.00000001
using namespace std;
double a[NMAX][NMAX];
int r[NMAX];
bool eps (double x)
{
if (x > -EPS && x < EPS)
return 0;
return 1;
}
int n, m;
int main ()
{
ifstream cin ("gauss.in");
ofstream cout ("gauss.out");
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m + 1; j++)
cin >> a[i][j];
int l = 1, c = 1;
while (l <= n && c <= m)
{
if (eps(a[l][c]) == 0)
{
int next_lin = l + 1;
while (eps(a[next_lin][c]) == 0 && next_lin <= n)
next_lin++;
if (next_lin == n + 1){
c++;
continue;
}
swap (a[next_lin], a[l]);
}
for (int i = 1; i <= n; i++)
{
if (i == l)
continue;
double k = a[i][c] / a[l][c];
for (int j = 1; j <= m + 1; j++)
a[i][j] -= k * a[l][j];
}
cout << setprecision (2) << fixed;
/* for (int ii = 1; ii <= n; ii++)
{
for (int jj = 1; jj <= m + 1; jj++)
cout << a[ii][jj] << " ";
cout << "\n";
}
cout << "\n\n\n";*/
r[c] = l;
l++;
c++;
}
if (c > m)
{
for (int i = l; i <= n; i++)
if (eps (a[i][m + 1]))
{
cout << "Imposibil \n";
return 0;
}
}
cout << setprecision (10) << fixed;
for (int i = 1; i <= m; i++)
if (r[i] == 0)
cout << "0.0 ";
else cout << a[r[i]][m + 1] / a[r[i]][i] << " " ;
return 0;
}