Pagini recente » Cod sursa (job #521293) | Cod sursa (job #2876103) | Cod sursa (job #2143070) | Cod sursa (job #745612) | Cod sursa (job #609792)
Cod sursa(job #609792)
#include<stdio.h>
#include<math.h>
#define N 302
int a[N][N],i,j,m,n,k,x,p,l;
float b[N][N],z,c[N],s,y;
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("%d",&a[i][j]),b[i][j]=a[i][j];
if(n<=m)
p=n;
else
p=m;
for(k=1;k<=p;k++)
{y=fabs(b[k][k]);
i=k;
for(j=k+1;j<=n;j++)
if(y<fabs(b[j][k]))
y=fabs(b[j][k]),i=j;
for(j=k;j<=m+1;j++)
z=b[k][j],b[k][j]=b[i][j],b[i][j]=z;
if(b[k][k])
for(j=k+1;j<=m+1;j++)
b[k][j]/=b[k][k];
b[k][k]=1;
for(i=k+1;i<=n;i++)
for(j=k+1;j<=m+1;j++)
b[i][j]=b[i][j]-b[k][j]*b[i][k];
for(i=k+1;i<=n;i++)
b[i][k]=0;}
for(i=1;i<=n;i++)
{l=0;
for(j=1;j<=m;j++)
if(b[i][j])
l=1;
if(!l&&b[i][m+1])
{printf("Imposibil");
return 0;}}
c[m]=b[n][m+1];
for(i=n;i;i--)
{s=0;
for(j=i+1;j<=m;j++)
s=s+b[i][j]*c[j];
c[i]=b[i][m+1]-s;}
for(i=1;i<=m;i++)
printf("%.8f ",c[i]);
return 0;}