Pagini recente » Cod sursa (job #405066) | Cod sursa (job #312503) | Cod sursa (job #544876) | Cod sursa (job #3156002) | Cod sursa (job #1151431)
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
const int MAX_N=310;
double a[MAX_N][MAX_N];
double val[MAX_N];
int n,m;
void schimba(double a[MAX_N],double b[MAX_N]) {
for(int i=1;i<=m+1;i++) {
swap(a[i],b[i]);
}
}
void redu(double a[MAX_N],double b[MAX_N],double c) {
for(int i=1;i<=m+1;i++) {
a[i]+=c*b[i];
}
}
int main() {
fout<<setprecision(10)<<fixed;
fin>>n>>m;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m+1;j++) {
fin>>a[i][j];
}
}
int p=1;
for(int j=1;j<=m;j++) {
if(p==n+1) {
val[j]=0;
continue;
}
if(!a[p][j]) {
for(int i=p+1;i<=n;i++) {
if(a[i][j]) {
schimba(a[i],a[p]);
break;
}
}
if(!a[p][j]) {
val[j]=0.0;
continue;
}
}
for(int i=1;i<=n;i++) {
if(i==p) {
continue;
}
redu(a[i],a[p],-(a[i][j]/a[p][j]));
}
p++;
}
p=1;
for(int j=1;j<=m;j++) {
if(a[p][j]) {
val[j]=a[p][m+1]/a[p][j];
p++;
}
fout<<val[j]<<' ';
}
return 0;
}