Pagini recente » Cod sursa (job #244456) | Cod sursa (job #2560181) | Cod sursa (job #123465) | Cod sursa (job #273057) | Cod sursa (job #781885)
Cod sursa(job #781885)
#include<fstream>
#include<iomanip>
#define eps 0.0000000001
#include<cmath>
using namespace std;
double a[305][305],sol[305];
int main(void){
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int i,j,n,m,k,k1; double aux; bool ok=true;
fin>>n>>m; ++m;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j) fin>>a[i][j];
i=1; j=1;
while (i<=n&&j<m){
for (k=i; k<=n; ++k)
if (a[k][j]!=0){ for (k1=j; k1<=m; ++k1) {aux=a[i][k1]; a[i][k1]=a[k][k1]; a[k][k1]=aux; } break; }
aux=a[i][j];
for (k=j; k<=m; ++k)a[i][k]/=aux;
for (k=i+1; k<=n; ++k){
aux=a[k][j]; a[k][j]=0;
if (aux!=0) for (k1=j+1; k1<=m; ++k1)a[k][k1]=a[k][k1]/aux-a[i][k1];
}
++i;++j;
}
for (i=1; i<=n; ++i){
int d=0;
for (j=1; j<=m; ++j) if (fabs(a[i][j])>eps)++d;
if (d==1&&a[i][m]!=0) { ok=false; break; }
}
if (ok==true){
for (k=j-1; k>=1; --k){
aux=a[k][m];
for (int k1=m-1; k1>k; --k1)aux-=sol[k1]*a[k][k1];
sol[k]=aux;
}
for (k=1; k<m; ++k) fout<<fixed<<setprecision(10)<<sol[k]<<" ";
}
else fout<<"Imposibil";
return(0);
}