Pagini recente » Cod sursa (job #3238224) | Cod sursa (job #3182377) | Cod sursa (job #1373720) | Cod sursa (job #2242460) | Cod sursa (job #1412282)
#include <bits/stdc++.h>
#define eps 0.00000000001
using namespace std;
double a[305][305], fact;
int n, m, i, j, l, k, ec[305];
int main()
{
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 1; i <= n; i++)
for(j = 1; j <= m + 1; j++)
scanf("%lf", &a[i][j]);
k = 1;
for(j = 1; j <= m; j++)
{
for(i = k; i <= n; i++)
if(a[i][j] < -eps || a[i][j] > eps)
break;
if(i > n)
continue;
if(i > k)
for(l = 1; l <= m + 1; l++)
swap(a[i][l], a[k][l]);
for(i = 1; i <= n; i++)
{
if(i != k && (a[i][k] < -eps || a[i][k] > eps))
{
fact = a[i][j] / a[k][j];
for(l = j; l <= m + 1; l++)
a[i][l] -= fact * a[k][l];
}
}
ec[j] = k++;
}
for(j = k; j <= n; j++)
if(a[j][m + 1] < -eps || a[j][m + 1] > eps)
{
printf("Imposibil");
return 0;
}
for(j = 1; j <= m; j++)
printf("%.10lf ", ec[j] ? a[ec[j]][m + 1] / a[ec[j]][j] : 0.0);
return 0;
}