Pagini recente » Cod sursa (job #2592689) | Cod sursa (job #308737) | Cod sursa (job #1856242) | Cod sursa (job #1177262) | Cod sursa (job #1545488)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
#define eps 1e-4
#define MAX 302
double a[MAX][MAX], rez[MAX];
int n, m;
void af()
{
int i, j;
for(i = 1 ; i <= n ; i++)
{
for(j = 1 ; j <= m + 1 ; j++)
{
cout << a[i][j] << " ";
}
cout << "\n";
}
cout << '\n';
}
int main()
{
int i, j, ci, cj;
fin >> n >> m;
for(i = 1 ; i <= n ; i++)
{
for(j = 1 ; j <= m + 1 ; j++)
{
fin >> a[i][j];
}
}
i = j = 1;
while(i <= n && j <= m)
{
for(ci = i ; ci <= n ; ci++)
{
if(abs(a[ci][j]) >= eps)
{
for(cj = j ; cj <= m + 1 ; cj++)
{
swap(a[i][cj], a[ci][cj]);
}
break;
}
}
if(ci == n + 1)
{
j++;
continue;
}
//af();
for(cj = m + 1 ; cj >= j ; cj--)
{
a[i][cj] /= a[i][j];
}
// af();
for(ci = i + 1 ; ci <= n ; ci++)
{
if(abs(a[ci][j]) >= eps)
{
for(cj = m + 1 ; cj >= j ; cj--)
{
a[ci][cj] -= a[ci][j] * a[i][cj];
}
}
}
// af();
// cout << "---------------------\n\n";
i++;
j++;
}
// af();
for(i = n ; i >= 1 ; i--)
{
for(j = 1 ; j <= m + 1 ; j++)
{
if(abs(a[i][j]) >= eps)
{
if(j == m + 1)
{
fout << "Imposibil\n";
return 0;
}
rez[j] = a[i][m + 1];
for(cj = j + 1 ; cj <= m ; cj++)
{
rez[j] -= rez[cj] * a[i][cj];
}
break;
}
}
}
for(i = 1 ; i <= m ; i++)
{
fout << fixed << setprecision(8) << rez[i] << " ";
}
fout << "\n";
}