Pagini recente » Cod sursa (job #179861) | Cod sursa (job #2238534) | Cod sursa (job #1872128) | Cod sursa (job #1338210) | Cod sursa (job #781864)
Cod sursa(job #781864)
#include<fstream>
#include<iomanip>
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;
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){
int k,k1; double aux;
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;
}
// if (j==m||a[n][m]==0) {
for (int k=j-1; k>=1; --k){
double aux=a[k][m];
for (int k1=m-1; k1>k; --k1)aux-=sol[k1]*a[k][k1];
sol[k]=aux;
}
bool ok=true;
for (int k=i+1; k<=n; ++k) if (a[k][m]==0) {ok=false; break; }
for (int k=1; k<m; ++k) fout<<fixed<<setprecision(10)<<sol[k]<<" ";
// else fout<<"Imposibil";
// }
// else fout<<"Imposibil";
return(0);
}