Pagini recente » Cod sursa (job #2145105) | Cod sursa (job #2340160) | Cod sursa (job #768873) | Cod sursa (job #1638935) | Cod sursa (job #781898)
Cod sursa(job #781898)
#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");
short 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];
if (aux!=0) {
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){
short 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);
}