Pagini recente » Cod sursa (job #2578095) | Cod sursa (job #1646764) | Cod sursa (job #1226212) | Cod sursa (job #2041548) | Cod sursa (job #2111412)
#include <fstream>
#include <algorithm>
#include <iomanip>
#define epsi 0.0000001
using namespace std;
ifstream in ("gauss.in");
ofstream out ("gauss.out");
double A[305][305];
double x[305];
int main()
{
int n, m, i, j, k;
in >> n >> m;
for(i = 1; i <= n; i++)
for(j = 1; j <= m+1; j++)
in >> A[i][j];
i = 1;
j = 1;
while(i <= n && j <= m)
{
for(k = i; k <= n; k++)
if(A[k][j] > epsi || A[k][j] < -epsi)
break;
if(k == n+1)
{
j++;
continue;
}
//else
//{
if(k != i)
for(int l = 1; l <= m+1; l++)
swap(A[i][l], A[k][l]);
for(int l = j+1; l <= m+1; l++)
A[i][l] /= A[i][j];
A[i][j] = 1;
for(int t = i+1; t <= n; t++)
{
for(int l = j+1; l <= m+1; l++)
A[t][l] -= A[t][j] * A[i][l];
A[t][j] = 0;
}
i++;
j++;
//}
}
for(i = n; i >= 1; i--)
for(j = 1; j <= m+1; j++)
if(A[i][j] > epsi || A[i][j] < -epsi)
{
if(j == m+1)
{
out << "Imposibil";
return 0;
}
x[j] = A[i][m+1];
for(int l = j+1; l <= m; l++)
x[j] -= A[i][l]*x[l];
break;
}
for(i = 1; i <= m; i++)
out << setprecision(8) << fixed << x[i] <<" ";
return 0;
}