Pagini recente » Cod sursa (job #2153114) | Cod sursa (job #2263447) | Cod sursa (job #677580) | Cod sursa (job #162597) | Cod sursa (job #1212974)
#include <fstream>
#include <iomanip>
#define DIM 310
#define EPS 0.00000001
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
double A[DIM][DIM], X[DIM], aux;
int n, m, i, j, k, t;
int main() {
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m+1;j++)
fin>>A[i][j];
i = 1; j = 1;
while (i<=n && j<=m) {
if (A[i][j] != 0) {
for (k=m+1;k>=j+1;k--)
A[i][k] /= A[i][j];
A[i][j] = 1;
for (k = i+1;k<=n;k++) {
for (t = j+1;t<=m+1;t++)
A[k][t] -= A[k][j] * A[i][t];
A[k][j] = 0;
}
i++;
j++;
continue;
}
for (k=i+1;k<=n;k++)
if (A[k][j] != 0)
break;
if (k == n+1) {
j++;
continue;
} else {
for (t=1;t<=m+1;t++) {
aux = A[i][t];
A[i][t] = A[k][t];
A[k][t] = aux;
}
}
}
for (i=n;i>=1;i--) {
for (j=1;j<=m+1;j++)
if (A[i][j] > EPS || A[i][j] < -EPS)
break;
if (j == m+1) {
fout<<"Imposibil";
return 0;
}
if (j == m+2)
continue;
X[j] = A[i][m+1];
for (k=j+1;k<=m;k++)
X[j] -= X[k]*A[i][k];
}
for (i=1;i<=m;i++)
fout<<setprecision(10)<<fixed<<X[i]<<" ";
return 0;
}