Pagini recente » Cod sursa (job #1090767) | Cod sursa (job #253141) | Cod sursa (job #2129274) | Cod sursa (job #2516616) | Cod sursa (job #1657457)
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n, m;
double A[301][302], X[301];
bool egal( double x, double y ){
return x - 1e-8 <= y && y <= x + 1e-8;
}
int main()
{
int i, j, k, p, l, c;
f >> n >> m;
for( i = 1; i <= n; i++ ){
for( j = 1; j <= m + 1; j++ )
f >> A[i][j];
}
i = j = 1;
while( i <= n && j <= m ){
k = i;
while( A[k][j] == 0.0 && k <= n )
k++;
if( k <= n ){
if( k != i )
for( p = 1; p <= m + 1; p++ )
swap(A[i][p],A[k][p]);
for( p = m + 1; p >= j; p-- )
A[i][p] /= A[i][j];
for( l = i + 1; l <= n; l++ ){
for( c = j + 1; c <= m + 1; c++ )
A[l][c] -= A[i][c] * A[l][j];
A[l][j] = 0.0;
}
i++;
j++;
}
else
j++;
}
for( i = n; i >= 1; i-- ){
j = i;
while( egal(A[i][j],0.0) && j <= m + 1 )
j++;
if( j == m + 1 ){
g << "Imposibil\n";
return 0;
}
else{
X[j] = A[i][m+1];
for( k = m; k > j; k-- )
X[j] -= X[k] * A[i][k];
}
}
for( i = 1; i <= m; i++ )
g << setprecision(8) << fixed << X[i] << " ";
return 0;
}