Pagini recente » Cod sursa (job #1388487) | Cod sursa (job #441025) | Cod sursa (job #1263818) | Cod sursa (job #2956186) | Cod sursa (job #1444386)
#include<cstdio>
using namespace std;
int p[309], N, M;
double sol[309], A[309][309];
double eps = 1e-10;
double mod (double x)
{
if (x < 0)
return -x;
return x;
}
int main ()
{
freopen ("gauss.in", "r", stdin);
freopen ("gauss.out", "w", stdout);
scanf ("%d %d", &M, &N);
for (int i=1; i<=M; i++)
for (int j=1; j<=N+1; j++)
scanf ("%lf", &A[i][j]);
for (int i=1; i<=M; i++)
{
p[i] = 0;
for (int j=1; j<=N+1; j++)
if (mod (A[i][j]) > eps)
{
p[i] = j;
break;
}
if (p[i] == N + 1)
{
printf ("Imposibil\n");
return 0;
}
if (p[i] == 0)
continue;
for (int j=1; j<=M; j++)
if (j != i && mod (A[j][p[i]]) > eps)
{
double rap = (double)A[j][p[i]] / A[i][p[i]];
for (int k=1; k<=N + 1; k++)
A[j][k] = (double) A[j][k] - A[i][k] * rap;
}
}
for (int i=1; i<=M; i++)
if (p[i])
sol[p[i]] = (double)A[i][N+1] / A[i][p[i]];
for (int i=1; i<=N; i++)
printf ("%.10lf ", sol[i]);
printf ("\n");
return 0;
}