Pagini recente » Cod sursa (job #1118703) | Cod sursa (job #2748247) | Statistici Stanusoiu Mihai (mihaistanusoiu) | Cod sursa (job #788138) | Cod sursa (job #2921250)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
const int N = 301;
const double eps = 1e-8;
double coef[N + 1][N + 1], ans[N + 1];
bool notNull(double x){
return (x < -eps || x > eps);
}
int main(){
int n, m;
fin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m + 1; j++)
fin >> coef[i][j];
int i = 1, j = 1;
while(i <= n && j <= m){
int k = i;
while(k <= n){
if(notNull(coef[k][j]))
break;
k++;
}
if(k == n + 1){
j++;
continue;
}
if(k != i){
for(int jj = 1; jj <= m + 1; jj++)
swap(coef[k][jj], coef[i][jj]);
}
for(int jj = m + 1; jj >= j; jj--)
coef[i][jj] /= coef[i][j];
for(int ind = i + 1; ind <= n; ind++)
for(int jj = m + 1; jj >= j; jj--)
coef[ind][jj] -= coef[ind][j] * coef[i][jj];
i++, j++;
}
for(i = n; i >= 1; i--)
for(j = 1; j <= m + 1; j++)
if(notNull(coef[i][j])){
if(j == m + 1){
fout << "Imposibil\n";
return 0;
}
ans[j] = coef[i][j + 1];
for(int jj = j + 1; jj <= m; jj++)
ans[j] -= ans[jj] * coef[i][jj];
break;
}
fout << fixed << setprecision(8);
for(int jj = 1; jj <= m; jj++)
fout << ans[jj] << ' ';
return 0;
}