Cod sursa(job #1878647)

Utilizator binicBinica Nicolae binic Data 14 februarie 2017 12:41:22
Problema Algoritmul lui Gauss Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include<cstdio>
using namespace std;
int n,m,p[306];
double rap,ras[305],a[305][305];
int main ()
{
    freopen ("gauss.in", "r", stdin);
    freopen ("gauss.out", "w", stdout);
    scanf ("%d %d", &n, &m);
    /// n operatii, m necunoscute
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m+1; j++)
            scanf ("%lf", &a[i][j]);
    /// p[i] = j-ul minim a.i. a[i][j] != 0
    for (int i = 1; i <= n; i++)
    {
        p[i]=0;
        for (int j = 1; j <= m+1; j++)
            if (a[i][j] != 0)
            {
                p[i] = j;
                break;
            }
        if (p[i] == m+1)
        {
            printf ("Imposibil\n");
            return 0;
        }
        else if (p[i] == -1) continue;
        else
        {
            for (int j = 1; j <= m; j++)
                if (j != i && a[j][p[i]] != 0)
                {
                    rap = (double) a[j][p[i]] / a[i][p[i]];
                    for ( int k = 1; k <= m+1; k++)
                        a[j][k] = (double) a[j][k] - a[i][k] * rap;
                }
        }
    }

    for (int i = 1; i <= m; i++)
        if (p[i] && a[i][p[i]])
            ras[ p[i] ] = (double) a[i][m+1] / a[i][p[i]];
    for (int i = 1; i <= m; i++)
        printf("%8lf ",ras[i]);
    return 0;
}