Pagini recente » Cod sursa (job #165888) | Cod sursa (job #1602436) | Cod sursa (job #2764460) | Cod sursa (job #450878) | Cod sursa (job #1647779)
#include <iostream>
#include <windows.h>
using namespace std;
int n, m, i, k, j;
float a[10][10], aux, S, piv;
void read() {
freopen("gauss.in", "r", stdin);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m + 1; j++) {
cin >> a[i][j];
}
}
}
int main() {
read();
freopen("gauss.out", "w", stdout);
//2
if (a[1][1] == 0) {
//2.1
i = 1;
//2.2
do {
i++;
} while (a[i][1] == 0 && i <= n);
//2.3
if (i > n) {
cout << "Imposibil";
system("PAUSE");
}
//2.4
for (j = 1; j <= n + 1; j++) {
aux = a[1][j];
a[1][j] = a[i][j];
a[i][j] = aux;
}
}
//3
for (i = 2; i <= n; i++) {
a[i][1] /= a[1][1];
}
//4
for (k = 2; k <= n; k++) {
i = k;
do {
S = 0;
for (int h = 1; h <= k - 1; h++) {
S += a[i][h] * a[h][k];
}
piv = a[i][k] - S;
i++;
} while (piv == 0 && i <= n);
//4.3
if (piv == 0) {
cout << "Imposibil";
system("PAUSE");
}
//4.4
if (i != k + 1) {
for (j = 1; j <= n + 1; j++) {
aux = a[k][j];
a[k][j] = a[i - 1][j];
a[i - 1][j] = aux;
}
}
//4.5
for (j = k; j <= n; j++) {
S = 0;
for (int h = 1; h <= k - 1; h++) {
S = S + a[k][h] * a[h][j];
}
a[k][j] = a[k][j] - S;
}
//4.6
for (i = k + 1; i <= n; i++) {
S = 0;
for (int h = 1; h <= k - 1; h++) {
S = S + a[i][h] * a[h][k];
}
a[i][k] = (a[i][k] - S) / a[k][k];
}
}
//5
for (i = 2; i <= n; i++) {
S = 0;
for (j = 1; j <= i - 1; j++) {
S = S + a[i][j] * a[j][n + 1];
}
a[i][n + 1] = a[i][n + 1] - S;
}
//6
a[n][n + 1] = a[n][n + 1] / a[n][n];
//7
for (i = n - 1; i >= 1; i--) {
S = 0;
for (j = i + 1; j <= n; j++) {
S = S + a[i][j] * a[j][n + 1];
}
a[i][n + 1] = (a[i][n + 1] - S) / a[i][i];
}
for (i = 1; i <= n; i++) {
cout << a[i][n + 1] << " ";
}
system("PAUSE");
}