Pagini recente » Cod sursa (job #1003730) | Cod sursa (job #2460130) | Cod sursa (job #757666) | Cod sursa (job #1083371) | Cod sursa (job #812383)
Cod sursa(job #812383)
#include<cstdio>
#include<algorithm>
#define eps 0.0000001
using namespace std;
double a[305][305],r,sol[305];
int i,j,k,l,n,m,q,x;
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",&q);
a[i][j]=(double)q;
}
}
for(i=1,j=1;i<=n&&j<=m;j++)
{
for(k=i;k<=n;k++)
{
if(a[k][j]>=eps) break;
}
if(k!=n+1)
{
x=k; r=a[x][k];
for(k=1;k<=m+1;k++)
{
swap(a[i][k],a[x][k]);
a[i][k]=a[i][k]/r;
}
for(k=i+1;k<=n;k++)
{
r=a[k][j]/a[i][j];
for(l=j;l<=m+1;l++)
{
a[k][l]=a[k][l]-r*a[i][l];
}
}
i++;
}
}
for(i=n,q=m;i>=1&&q>=1;i--)
{
for(j=1;j<=m+1&&(!(a[i][j]));j++);
if(j==m+2&&a[i][m+1]>=eps) {printf("Imposibil"); return 0;}
if(a[i][q]==0) continue;
sol[q]=a[i][m+1]/a[i][q];
for(j=q+1;j<=n;j++)
{
sol[q]-=a[i][j]*sol[j];
}
q--;
}
for(i=1;i<=m;i++) printf("%.10f ",sol[i]);
}