Pagini recente » Cod sursa (job #1668752) | Cod sursa (job #1331215) | Cod sursa (job #284524) | Cod sursa (job #2296838) | Cod sursa (job #3302290)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream cin ("gauss.in");
ofstream cout ("gauss.out");
double v[305][305],v1[305];
double EPS=0.00000001;
int main () {
int n,m,k;
cin>>n>>m;
for (int i=1; i<=n; i++) {
for (int j=1; j<=m+1; j++) {
cin>>v[i][j];
}
}
int i=1,j=1;
while (i<=n && j<=m) {
for (k=i; k<=n; k++) {
if (-EPS>v[k][j] || v[k][j]>EPS) break;
}
if (k==n+1) {
j++;
continue;
}
if (k!=i) {
for (int c=1; c<=m+1; c++) {
swap(v[i][c],v[k][c]);
}
}
for (int l=j+1; l<=m+1; l++) {
v[i][l]=v[i][l]/v[i][j];
}
v[i][j]=1;
for (int l=i+1; l<=n; l++) {
for (int c=j+1; c<=m+1; c++) {
v[l][c]-=v[i][c]*v[l][j];
}
v[l][j]=0;
}
i++;
j++;
}
for (int i=n; i>=1; i--) {
for (int j=1; j<=m+1; j++) {
if (-EPS>v[i][j] || v[i][j]>EPS) {
if (j==m+1) {
cout<<"Imposibil"<<'\n';
return 0;
}
v1[j]=v[i][m+1];
for (int k=j+1; k<=m; ++k) {
v1[j]=v1[j]-v1[k]*v[i][k];
}
break;
}
}
}
for (int i=1; i<=m; i++) {
cout<<fixed<<setprecision(8)<<v1[i]<<' ';
}
cout<<'\n';
}