Cod sursa(job #1222024)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 21 august 2014 22:57:17
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 100010

int N, M;
long double A[305][305], Sol[305], X, Y;

int main() {
	
	freopen("gauss.in","r",stdin);
	freopen("gauss.out","w",stdout);
	
	cin >> N >> M;
	
	for (int i = 1; i <= N; i++)
	for (int j = 1; j <= M+1; j++) {
		cin >> A[i][j];
	}
	
	if (N < M) {
		cout << "Imposibil"; 
	} else {
		for (int k = 1; k <= min(N, M); k++) {
			X = A[k][k];
			for (int j = k; j <= M+1; j++) A[k][j] *= -1/X;
			for (int i = k+1; i <= N; i++) {
				Y = A[i][k];
				for (int j = k; j <= M+1; j++) {
					A[i][j] = A[i][j] * 1/Y + A[k][j];
				}
			}
		}
		
		for (int k = min(N, M); k >= 1; k--) {
			Sol[k] = A[k][M+1];
			for (int j = k+1; j <= M; j++) {
				Sol[k] -= A[k][j] * Sol[j];
			}
			Sol[k] /= A[k][k];
		}
		
		cout << setprecision(10) << fixed;
		for (int k = 1; k <= M; k++) cout << Sol[k] << " ";
	}
		
	return 0;
}