Cod sursa(job #1462714)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 18 iulie 2015 18:50:42
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <iomanip>
#include <cmath>
#define Nmax 305
#define eps 0.00000001

using namespace std;

double a[Nmax][Nmax];
int n,m;

inline void SwapL(int l1, int l2)
{
    if(l1==l2) return;
    int i;
    for(i=1;i<=m+1;++i) swap(a[l1][i],a[l2][i]);
}

int main()
{
    int i,j,k;
    double rap;
    ifstream cin ("gauss.in");
    ofstream cout ("gauss.out");
    cin>>n>>m;
    for(i=1;i<=n;++i)
        for(j=1;j<=m+1;++j) cin>>a[i][j];
    for(j=1;j<=m;++j)
    {
        for(i=j;i<=n && fabs(a[i][j])<eps;++i);
        if(i==n+1)
        {
            cout<<"Imposibil\n"; return 0;
        }
        SwapL(i,j);
        for(i=1;i<=n;++i)
            if(i!=j)
            {
                rap=-(a[i][j]/a[j][j]);
                for(k=1;k<=m+1;++k) a[i][k]+=rap*a[j][k];
            }
    }
    cout<<setprecision(10)<<fixed;
    for(i=1;i<=m;++i) cout<<(a[i][m+1] / a[i][i])<<" ";
    cout<<"\n";
    return 0;
}