Pagini recente » Cod sursa (job #3038944) | Cod sursa (job #2237046) | Cod sursa (job #2587769) | Cod sursa (job #481346) | Cod sursa (job #643076)
Cod sursa(job #643076)
# include <stdio.h>
# define pr 0.000001
using namespace std;
double a[400][400],x[400],xx;
int n,m,i,j,k,q,ok;
void inter (int i,int j)
{
int k;
double aux;
for (k=1;k<=m;k++)
{
aux=a[i][k];
a[i][k]=a[j][k];
a[j][k]=aux;
}
}
int main ()
{
freopen ("gauss.in","r",stdin);
freopen ("gauss.out","w",stdout);
scanf ("%i%i",&n,&m);
m++;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf ("%lf",&a[i][j]);
i=1;
j=1;
while (i<=n && j<m)
{
ok=1;
if (a[i][j]==0)
{
ok=0;
int k;
for (k=i+1;k<=n;k++)
if (a[k][j]!=0)
{
inter (k,i);
ok=1;
}
}
if (ok==0)
j++;
else
{
xx=a[i][j];
for (k=j;k<=m;k++)
a[i][k]=a[i][k]/xx;
for (k=i+1;k<=n;k++)
if (a[k][j]!=0)
{
xx=a[k][j];
for (q=j;q<=m;q++)
a[k][q]-=xx*a[i][q];
}
}
i++;
j++;
}
for (i=n;i>=1;i--)
for (j=1;j<=m;j++)
if (a[i][j]>pr || a[i][j]<-pr)
{
if (j==m)
{
printf ("Imposibil");
return 0;
}
x[j]=a[i][m];
for (k=j+1;k<m;k++)
x[j]-=a[i][k]*x[k];
break;
}
for (i=1;i<m;i++)
printf ("%.8lf ",x[i]);
return 0;
}