Pagini recente » Cod sursa (job #1220533) | Cod sursa (job #2181470) | Cod sursa (job #858442) | Cod sursa (job #2813701) | Cod sursa (job #3265533)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
const double EPS = 1e-8;
ifstream f("gauss.in");
int n, m;
double A[302][302], ///Matricea extinsa
x[301]; ///Vectorul solutie
bool gauss()
{
int i, j, k;
for(i = 1; i <= n; i++)
{
if(abs(A[i][i]) <= EPS)
{
bool ok = 0;
for(j = i + 1; j <= n; j++)
{
if(abs(A[j][i]) > EPS)
{
ok = 1;
for(k = i; k <= n + 1; k++)
swap(A[i][k], A[j][k]);
break;
}
}
if(!ok)
return 0;
}
for(j = i + 1; j <= n + 1; j++)
A[i][j] /= A[i][i];
A[i][i] = 1.0;
for(j = i + 1; j <= n; j++)
{
for(k = i + 1; k <= n + 1; k++)
A[j][k] -= A[i][k] * A[j][i];
A[j][i] = 0.0;
}
}
return 1;
}
void solutie()
{
for(int i = n; i >= 1; i--)
{
x[i] = A[i][n + 1];
for(int j = n; j > i; j--)
x[i] -= A[i][j] * x[j];
}
}
void afisare()
{
cout.setf(ios::fixed, ios::floatfield);
cout.precision(4);
for(int i = 1; i <= n; i++)
cout << 'x' << i << " = " << setw(8) << x[i] << '\n';
}
int main()
{
f >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m + 1; j++)
f >> A[i][j];
if(gauss()) ///Sistem compatibil determinat
{
solutie();
afisare();
}
else
cout << "Imposibil";
return 0;
}