Cod sursa(job #1936170)

Utilizator darian2001Clodnischi Darian Antonio darian2001 Data 22 martie 2017 21:40:24
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include <fstream>
#include <vector>
using namespace std;


#define EPS 0.0000001

ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m;
double coeficienti[300];
double rezultate[300];
double matrice[300][300];

void reducere_matrice()
{
    int i=1,j=0,k;
    double fractie;
    while(i<n)
    {
        for(int p=i;p<n;p++)
        {

            fractie=-(double)matrice[p][j]/matrice[i-1][j];
            for(k=j;k<m;k++){
                    matrice[p][k]=matrice[p][k]+matrice[i-1][k]*fractie;
                }
            rezultate[p]=(double)rezultate[p]+(double)rezultate[i-1]*fractie;
        }
        i++;j++;
    }
}

int cautare_coeficienti()
{
    int i,j,k;
    double suma;
    k=m;
    for(i=n-1;i>=0;i--){
        suma=0;
        for(j=m-1;j>=k;j--){
            suma+=coeficienti[j]*matrice[i][j];
        }
        if(matrice[i][k-1]==0)
            {g<<"imposibil";
            return 0;
            }
        else{
            coeficienti[k-1]=(rezultate[i]-suma)/matrice[i][k-1];
            k--;
            }

    }
    for(int i=0;i<m;i++)
        g<<coeficienti[i]<<" ";
}

int main()
{
    f>>n>>m;

    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            f>>matrice[i][j];
        }
        f>>rezultate[i];
    }
    reducere_matrice();
    cautare_coeficienti();
    /*for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
                g<<matrice[i][j]<<' ';
        }
        g<<rezultate[i]<<"\n";
    }*/
    f.close();
    g.close();
}