Cod sursa(job #608695)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 17 august 2011 17:56:09
Problema Algoritmul lui Gauss Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;

const int maxn=305;
int i,j,x,k,u,N,M;
float imp;
float A[maxn][maxn],aux[maxn],X[maxn];
int p[maxn];

ifstream fin("gauss.in");
ofstream fout("gauss.out");

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) {
		for(x=i;x<=N && A[x][j]==0;x++);
		if(x<=N) {
		
		memcpy(aux,A[i],sizeof(A[i]));
		memcpy(A[i],A[x],sizeof(A[i]));
		memcpy(A[x],aux,sizeof(A[i]));
		
		imp=A[i][j];
		for(k=1;k<=M+1;k++) 
			A[i][k]=A[i][k]/imp;
		
		for(u=i+1;u<=N;u++) {
			imp=A[u][j];
			for(k=1;k<=M+1;k++)
				A[u][k]-=A[i][k]*imp;
			
		}
		}
		
		for(k=1;k<=M && A[i][k]==0;k++);
		p[i]=k;
		i++; j++;
	}
	
	for(i=N;i;i--) {
		if(p[i]==M+1) {
			fout << "Imposibil";
			return 0;
		}
		if(p[i]==0) continue;	
		X[p[i]]=A[p[i]][M+1];
		for(j=M;j>p[i];j--) X[p[i]]-=A[i][j]*X[j];
	}
	for(i=1;i<=M;i++)
		fout << setprecision(9) << X[i] << ' ';
}