Pagini recente » Cod sursa (job #2483552) | Cod sursa (job #1476569) | Cod sursa (job #761498) | Cod sursa (job #1247560) | Cod sursa (job #759219)
Cod sursa(job #759219)
#include<cstdio>
double v[305][305];
double r[305];
int main()
{
freopen ("gauss.in","r",stdin);
freopen ("gauss.out","w",stdout);
int n,m;
scanf ("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<=m;j++)
scanf ("%lf",v[i]+j);
int i=0,j=0;
while(i<n&&j<m){
for(int x=i;x<n;x++)
if(v[x][j]){
for(int y=0;y<=m;y++){
double t=v[x][y];
v[x][y]=v[i][y];
v[i][y]=t;
}
double val=v[i][j];
for(int y=0;y<=m;y++)
v[i][y]/=val;
for(int u=i+1;u<n;u++){
val=v[u][j];
for(int y=0;y<=m;y++)
v[u][y]-=v[i][y]*val;
}
i++;
break;
}
j++;
}
for(int i=n-1;i>=0;i--){
int p;
for(p=0;p<=m;p++)
if(v[i][p])
break;
if(p==m){
printf ("Imposibil");
return 0;
} else if (p>m)
continue; //???
r[p]=v[i][m];
for(int j=m-1;j>p;j--)
r[p]-=v[i][j]*r[j];
}
/*
for(int i=0;i<n;i++){
for(int j=0;j<=m;j++)
fprintf (stderr,"%.10lf ",v[i][j]);
fprintf (stderr,"\n");
}
*/
for(int i=0;i<m;i++)
printf ("%.10f ",r[i]);
}