Mai intai trebuie sa te autentifici.
Cod sursa(job #2078246)
Utilizator | Data | 29 noiembrie 2017 09:45:07 | |
---|---|---|---|
Problema | Algoritmul lui Gauss | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.71 kb |
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int nm = 1024;
double er[nm+2];
double a[nm+2][nm+2];
double oszt1,kivossz;
int n, m, ern;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int main()
{
fin >> n >> m;
for(int i = 0; i < n; ++i)
{
for(int j = 0; j <= m; ++j)
{
fin >> a[i][j];
}
}
/*for(int i = 0 ; i < n; ++i)
{
for(int j = 0 ; j <= m; ++j)
{
cout << a[i][j] <<" ";
}
cout << endl;
}*/
for(int k = 0, l = 0 ; k < n , k <= m; ++k, ++l)
{
for(int i = k+1; i < n; ++i)
{
oszt1 = a[i][l];
for(int j = l; j <= m; ++j)
{
if(a[k][l])
a[i][j] =a[i][j] - (a[k][j] * (oszt1/a[k][l]));
}
}
}
/*for(int i = 0 ; i < n; ++i)
{
for(int j = 0 ; j <= m; ++j)
{
cout << a[i][j] << " ";
}
cout << endl;
}*/
if(!a[n-1][m-1])
{
fout << "Impossible";
}
else
{
ern = 0;
int i,j,kiv;
for( i = n-1; i >=0; --i)
{
kivossz = 0;
for( j = m - 1, kiv = 0; j >= 0, kiv < ern; --j, ++kiv)
{
kivossz += a[i][j] * er[kiv];
}
//cout << a[i][j] << endl;
er[ern++] = (a[i][m] - kivossz)/a[i][j];
}
}
for(int z = ern-1 ; z >= 0; --z)
fout << fixed << setprecision(8) << er[z] << " ";
return 0;
}