Cod sursa(job #2921249)

Utilizator lolismekAlex Jerpelea lolismek Data 29 august 2022 15:09:27
Problema Algoritmul lui Gauss Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#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++;
		cout << "hello" << endl;
	}

	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 << "mami" << endl;

	fout << fixed << setprecision(8);

	for(int jj = 1; jj <= m; jj++)
		fout << ans[jj] << ' ';

	return 0;
}