Pagini recente » Cod sursa (job #1157628) | Cod sursa (job #1382756) | Cod sursa (job #1523591) | Cod sursa (job #955045) | Cod sursa (job #1687192)
#include <fstream>
#include <iomanip>
using namespace std;
double v[310][310],k,ans[310],aux[310][310];
int a,b,i,j,n,m,f;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int main()
{
fin>>n>>m;
m++;
for( i = 1 ; i <= n ; i++ )
for( j = 1 ; j <= m ; j++ )
{
fin>>v[ i ][ j ];
aux[ i ][ j ] = v[ i ][ j ];
}
for( f = 1 ; f <= n ; f++ )
{
k = v[ f ][ f ];
for( i = f ; i <= m ; i++ )
v[ f ][ i ] /= k;
for( i = f + 1 ; i <= n ; i++ )
{
k = v[ i ][ f ];
for( j = f ; j <= m ; j++ )
v[ i ][ j ] -= k * v[ f ][ j ];
}
}
for( i = n ; i >= 1 ; i-- )
{
k = 0;
for( j = i + 1 ; j < m ; j++ )
k += v[ i ][ j ] * ans[ j ];
ans[ i ] = v[ i ][ j ] - k;
}
for( i = 1 ; i <= n ; i++ )
{
k = 0;
for( j = 1 ; j < m ; j++ )
{
k += aux[ i ][ j ] * ans[ j ];
}
if( k > aux[ i ][ j ] )
k = k - aux[ i ][ j ];
else
k = aux[ i ][ j ] - k;
if( k > 0.0001 )
{
fout<<"Imposibil";
return 0;
}
}
for( i = 1 ; i < m ; i++ )
fout<<fixed<<setprecision(10)<<ans[ i ]<<' ';
return 0;
}