Pagini recente » Cod sursa (job #2066318) | Cod sursa (job #1224170) | Cod sursa (job #265762) | Cod sursa (job #1409454) | Cod sursa (job #1220881)
#include <fstream>
#include <iomanip>
#define DIM 310
#define LIM 0.0000000001
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m,sol;
double A[DIM][DIM];
double X[DIM],aux;
int main(void){
register int i,j,t,k;
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
f>>A[i][j];
i=1,j=1;
while(i<=n && j<=m){
for(k=i;k<=n;k++)
if(A[k][j])
break;
if(k==n+1){
j++;
continue;
}
if(k!=i){
for(t=1;t<=m+1;t++)
aux=A[k][t],A[k][t]=A[i][t],A[i][t]=aux;
}
for(t=j+1;t<=m+1;t++) A[i][t]/=A[i][j];
A[i][j]=1;
for(k=i+1;k<=n;k++){
for(t=j+1;t<=m+1;t++)
A[k][t]-=A[i][t]*A[k][j];
A[k][j]=0;
}
i++,j++;
}
for(i=n;i>0;i--){
for(j=1;j<=m+1;j++)
if(A[i][j] < -LIM || A[i][j] > LIM)
break;
if(j==m+2) continue;
if(j==m+1){
sol=-1;
break;
}
X[j]=A[i][m+1];
for(k=j+1;k<=m;k++)
X[j]-=X[k]*A[i][k];
}
if(sol==-1)
g<<"imposibil";
else
for(i=1;i<=m;i++)
g<<setprecision(10)<<fixed<<X[i]<<" ";
f.close();
g.close();
return 0;
}