Cod sursa(job #1575583)

Utilizator ZimmyZimmermann Erich Zimmy Data 21 ianuarie 2016 17:46:20
Problema Algoritmul lui Gauss Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include <iomanip>

using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
double A[305][305],*a[305],*aux,eps=0.000000001,v,y;
int n,m,i,j,k,l,ec[305];
int main()
{
    f>>n>>m;m++;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            f>>A[i][j];
        a[i]=A[i];
    }
    for(j=1,k=1;j<m;j++)
    {
        for(i=k;i<=n;i++)
            if(a[i][j]<-eps||a[i][j]>eps)
                break;
        if(i==n+1)
            continue;
        aux=a[i];a[i]=a[k];a[k]=aux;
        ec[j]=k;v=a[k][j];a[k][j]=0;
        for(i=1;i<=n;i++)
            if(a[i][j]<-eps||a[i][j]>eps)
            {
                y=a[i][j]/v;a[i][j]=0;
                for(l=j+1;l<=m;l++)
                    a[i][l]-=a[k][l]*y;
            }
        a[k][j]=v;
        k++;
    }
    for(i=k;i<=n;i++)
        if(a[i][m]<-eps||a[i][m]>eps)
        {
            g<<"Imposibil";
            return 0;
        }
    for(j=1;j<m;j++)
    {
        if(!ec[j])
        {
            g<<"0.00000000000 ";
            continue;
        }
        g<<fixed<<setprecision(10)<<a[ec[j]][m]/a[ec[j]][j]<<' ';
    }
    return 0;
}