Pagini recente » Cod sursa (job #1049776) | Cod sursa (job #2648528) | Cod sursa (job #2306657) | Cod sursa (job #970630) | Cod sursa (job #1385563)
#include <fstream>
#include <iomanip>
#define DIM 305
#define EPS 0.000000001
using namespace std;
int n, m, i, j, k, p, solution;
double A[DIM][DIM], A2[DIM];
int main()
{
ifstream fin("gauss.in");
ofstream fout("gauss.out");
fin >> n >> m;
for(i = 1; i <= n; i ++)
for(j = 1; j <= m + 1; j ++)
fin >> A[i][j];
i = 1;
j = 1;
while(i <= n && j <= m)
{
for(k = i; k <= n; k ++)
{
if(A[k][j] != 0)
break;
}
if(k == n + 1)
{
j ++;
continue;
}
if(k != i)
{
for(p = 1; p <= m + 1; p ++)
{
swap(A[i][p], A[k][p]);
}
}
for (p = j + 1; p <= m + 1; p++)
{
A[i][p]/=A[i][j];
}
A[i][j] = 1;
for(k = i + 1; k <= n; k ++)
{
for(p = j + 1; p <= m + 1; p ++)
{
A[k][p] -= A[i][p]*A[k][j];
}
A[k][j] = 0;
}
i ++;
j ++;
}
for(i = n; i >= 1; i --)
{
for(j = 1; j <= m + 1; j ++)
{
if (A[i][j] < -EPS || A[i][j] > EPS)
break;
}
if(j == m + 2)
{
continue;
}
if(j == m + 1)
{
solution = -1;
break;
}
A2[j] = A[i][m + 1];
for(k = j + 1; k <= m; k ++)
{
A2[j] -= A2[k] * A[i][k];
}
}
if(solution == - 1)
fout << "Imposibil" << "\n";
else
{
for (i = 1;i <= m;i ++)
fout << setprecision(10) << fixed << A2[i] << " ";
}
return 0;
}