Cod sursa(job #3319263)

Utilizator nistor_dora_valentinaNistor Dora Valentina nistor_dora_valentina Data 31 octombrie 2025 14:18:56
Problema Algoritmul lui Gauss Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.79 kb
#include <fstream>
#include <iomanip>

using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
float a[305][305], x[305];
int n, m, i, j, k;
int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m+1; j++)
            fin>>a[i][j]; //determinantul
    for(int i=1; i<n; i++)//linia cu care scad
        for(int j=i+1; j<=n; j++)//linia de unde scad
        {
            float coef=a[j][i]/a[i][i];
            for(int k=i; k<=m+1; k++)
                a[j][k]-=a[i][k]*coef;
        }
    for(int i=1; i<=n; i++)
    {
        bool ok=true;
        for(int j=1; j<=m; j++)
            if(a[i][j]!=0)
            {
                ok=false;
                break;
            }
        if(a[i][m+1]!=0 && ok==true)
        {
            fout<<-1;
            return 0;
        }
    }
    /*for(i=1; i<=n; i++)
    {
        for(j=1; j<=m+1; j++)
            fout<<a[i][j]<<" ";
        fout<<'\n';
    }*/


    float sum=0;
    int last=n;
    while(last)
    {
        bool ok=false;
        for(int i=1; i<=m; i++)
            if(a[last][i])
            {
                ok=true;
                break;
            }
        if(ok==true)
            break;
        last--;
    }
    for(i=1; i<=m; i++)
        if(i<m && a[last][i])
        {
            x[i]=1;
            sum+=a[last][i];
        }
    x[m]=(a[last][m+1]-sum)/a[last][n];
    for(i=last-1; i>=1; i--)
    {
        int ind;
        sum=0;
        for(j=m; j>=1; j--)
        {
            if(a[i][j])
            {
                sum+=a[i][j]*x[j];
                ind=j;
            }
        }
        x[ind]=(a[i][m+1]-sum)/a[i][ind];
    }
    for(i=1; i<=n; i++)
        fout<<fixed<<setprecision(8)<<x[i]<<" ";
    return 0;
}