Cod sursa(job #1143117)

Utilizator Vladinho97Iordan Vlad Vladinho97 Data 14 martie 2014 19:36:29
Problema Algoritmul lui Gauss Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>
#include <cmath>
#include <cstdio>
#define eps 1e-10
using namespace std;
double r[309],a[309][309],x[309];
int n,m;
void transf(int k,int l,double coef)
{
    int i,nr_0=0;
    double ult;
    for(i=1;i<=m;++i)
    {
        a[k][i]=a[k][i]-a[l][i]*coef;
    }
    r[k]=r[k]-r[l]*coef;
}
int main()
{
    int i,j;
    double coef;
    ifstream f("gauss.in");
    ofstream g("gauss.out");
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;++j)
            f>>a[i][j];
        f>>r[i];
    }
    if(n<=m)
    {
        for(i=n;i>0;--i)
        {
            for(j=n;j>0;--j)
                if(j!=i)
                {
                    coef=a[j][i]/a[i][i];
                    transf(j,i,coef);
                }
        }
        for(i=1;i<=n;i++)
                g<<r[i]/a[i][i]<<" ";
        for(i=n+1;i<=m;i++)
            g<<"0 ";
    }
    else
    {
        for(i=1;i<=m;++i)
            for(j=1;j<=m;++j)
                if(j!=i)
                {
                    coef=a[j][i]/a[i][i];
                    transf(j,i,coef);
                }
        for(i=n+1;i<=m;++i)
        {
            for(j=1;j<=m;j++)
                r[i]=r[i]-r[j]/a[j][j];
            if(fabs(r[i])<eps)
            {
                g<<"Imposibil";
                return 0;
            }
        }
        for(i=1;i<=m;i++)
            g<<r[i]/a[i][i]<<" ";
    }

}