Cod sursa(job #1647779)

Utilizator zVoxtyVasile Sebastian Costinel zVoxty Data 10 martie 2016 22:03:10
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.91 kb
#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");
}