Cod sursa(job #609788)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 23 august 2011 12:58:26
Problema Algoritmul lui Gauss Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include<stdio.h>
#include<math.h>
#define N 302
int a[N][N],i,j,m,n,k,x,y,u,v,l;
float b[N][N],z,c[N],s;
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];
i=j=1;
while(i<=n&&j<=m)
      {y=0;
      for(x=i;x<=n;x++)
      if(b[x][j])
               y=x;
      if(!y)
               j++;
      else
               {for(k=j;k<=m+1;k++)
                       z=b[y][k],b[y][k]=b[i][k],b[i][k]=z;
               for(k=j+1;k<=m+1;k++)
                       b[i][k]=b[i][k]/b[i][j];
               b[i][j]=1;
               for(u=i+1;u<=n;u++)
               for(v=j+1;v<=m+1;v++)
                       b[u][v]=b[u][v]-b[i][v]*b[u][j];
               for(u=i+1;u<=n;u++)
                       b[u][j]=0;
               i++,j++;}}
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<=n;i++)
      {s=0;
      for(j=1;j<=m;j++)
             s=s+a[i][j]*c[j];
      if(fabs(s-a[i][m+1])>0.001)
             {l=1;
             break;}}
if(!l)
      for(i=1;i<=m;i++)
             printf("%.8f ",c[i]);
else
      printf("Imposibil");
return 0;}