Pagini recente » Cod sursa (job #2582387) | Cod sursa (job #133583) | Cod sursa (job #1276175) | Cod sursa (job #2749040) | Cod sursa (job #2415744)
#include <bits/stdc++.h>
#define ld double
#define Nmax 305
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
const ld eps=1e-9;
ld a[Nmax][Nmax];
ld ans[Nmax];
int main(){
int n,m;
f>>n>>m;
for(int j,i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
f>>a[i][j];
for(int t,l,k,i=1,j=1;i<=n and j<=m;i++,j++){
for(k=i;k<=n;k++)
if(a[k][j]<-eps or a[k][j]>eps)
break;
if(k>n) continue;
if(k!=i)
for(l=1;l<=m+1;l++)
swap(a[k][l],a[i][l]);
for(l=j+1;l<=m+1;l++)
a[i][l]/=a[i][j];
a[i][j]=1;
for(l=i+1;l<=n;l++){
for(t=j+1;t<=m+1;t++)
a[l][t]-=(a[l][j]*a[i][t]);
a[l][j]=0;
}
}
for(int k,j,i=n;i;i--)
for(j=1;j<=m+1;j++)
if(a[i][j]<-eps or a[i][j]>eps){
if(j==m+1){
g<<"Imposibil";
return 0;
}
ans[j]=a[i][m+1];
for(k=j+1;k<=m;k++)
ans[j]-=(ans[k]*a[i][k]);
break;
}
for(int i=1;i<=m;i++)
g<<fixed<<setprecision(9)<<ans[i]<<' ';
return 0;
}