Pagini recente » Cod sursa (job #2661838) | Cod sursa (job #228615) | Cod sursa (job #2470161) | Cod sursa (job #1409694) | Cod sursa (job #821187)
Cod sursa(job #821187)
#include <fstream>
#include<iomanip>
#define N 100000000
using namespace std;
//ifstream fin("gauss.in");
//ofstream fout("gauss.out");
ifstream fin("input.txt");
ofstream fout("output.txt");
double v[305][305];
double r[305];
int main()
{
int n, m;
fin >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j <= m; j++)
fin >> v[i][j];
int i = 0, j = 0;
while(i < n && j < m)
{
for(int x = i; x < n; x++)
if(v[x][j])
{
for(int y = 0; y <= m; y++)
{
double t = v[x][y];
v[x][y] = v[i][y];
v[i][y] = t;
}
double val = v[i][j];
for(int y = 0; y <= m; y++)
v[i][y] /= val;
for(int u = i + 1; u < n; u++)
{
val = v[u][j];
for(int y = 0; y <= m; y++)
v[u][y] -= v[i][y] * val;
}
i++;
break;
}
j++;
}
for(int i = n-1; i >= 0; i--)
{
int p;
for(p = 0; p <= m; p++)
if(v[i][p] > 1e-10 || v[i][p] < -1e-10)
break;
if(p == m)
{
fout << "Imposibil\n";
return 0;
}
else if (p > m)
continue;
r[p] = v[i][m];
for(int j = m - 1; j > p; j--)
r[p] -= v[i][j] * r[j];
}
for(int i = 0; i < m; i++)
{
if(r[i])
{
fout << fixed;
fout << setprecision(8) << r[i] << " ";
}
else fout << "0 ";
}
fin.close();
fout.close();
return 0;
}