Pagini recente » Cod sursa (job #1391147) | Cod sursa (job #298611) | Cod sursa (job #2173442) | Cod sursa (job #1191463) | Cod sursa (job #1384716)
#include <fstream>
#include <iomanip>
#define DIM 311
#define mod 0.00000001
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m;
double A[DIM][DIM],v[DIM];
int main(void){
register int i,j,k,t;
double x;
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){
k=i;
while(!A[k][j] && k<=n)
if(k==n+1){
j++;
continue;
}
if(k!=i)
for(t=j;t<=m+1;t++) swap(A[i][t],A[k][t]);
for(k=j+1;k<=m+1;k++)
A[i][k]/=A[i][j];
A[i][j]=1;
for(k=i+1;k<=n;k++){
x=A[k][j];
for(t=j;t<=m+1;t++)
A[k][t]-=x*A[i][t];
}
i++;
j++;
}
for(i=n;i>0;i--){
j=1;
while(A[i][j]<=mod && A[i][j]>=-mod)
j++;
if(j==m+2)
continue;
if(j==m+1){
g<<"Imposibil";
break;
}
v[j]=A[i][m+1];
for(k=j+1;k<=m;k++)
v[j]-=A[i][k]*v[k];
}
for(i=1;i<=m;i++){
g<<setprecision(8)<<fixed<<v[i]<<" ";
}
f.close();
g.close();
return 0;
}