Pagini recente » Cod sursa (job #2421) | Cod sursa (job #1500532) | Cod sursa (job #42250) | Cod sursa (job #1866069) | Cod sursa (job #643046)
Cod sursa(job #643046)
# include <stdio.h>
# include <iostream>
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++;
}
ok=1;
for (i=n;i>=1;i--)
{
for (j=1;j<m;j++)
if (a[i][j]!=0)
break;
if (j==m && a[i][m]!=0)
{
printf ("Imposibil");
ok=0;
i=0;
}
if (ok==1)
{
x[j]=a[i][m];
for (k=j+1;k<m;k++)
x[j]-=a[i][k]*x[k];
}
}
if (ok==1)
for (i=1;i<m;i++)
printf ("%.8lf ",x[i]);
return 0;
}