Pagini recente » Cod sursa (job #1141197) | Cod sursa (job #1329747) | Cod sursa (job #22508) | Rating Pascariu Matei (mateipascariu) | Cod sursa (job #1472464)
#include<stdio.h>
#include<math.h>
int a[302][302],i,j,m,n,x,k,p[302],r,l;
double b[302][302],z,s,c[302],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];
for(r=n<m?n:m,k=1;k<=r;k++) {
for(y=fabs(b[k][k]),i=k,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];
for(b[k][k]=1,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++) {
for(k=0,j=m;j;j--)
if(b[i][j])
k=j;
p[i]=k;
}
for(i=n;i;i--) {
for(s=0,j=p[i]+1;j<=m;j++)
s=s+b[i][j]*c[j];
c[p[i]]=b[i][m+1]-s;
}
for(i=1;i<=n;i++) {
for(s=0,j=1;j<=m;j++)
s=s+a[i][j]*c[j];
if(fabs(s-a[i][m+1])>0.001)
l=1;
}
if(!l)
for(i=1;i<=m;i++)
printf("%.8lf ",c[i]);
else
printf("Imposibil");
}