Pagini recente » Cod sursa (job #2625872) | Cod sursa (job #2687800) | Cod sursa (job #2893748) | Cod sursa (job #2430121) | Cod sursa (job #2232195)
#include <bits/stdc++.h>
#define lim 0.0000001
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");
int n, m;
double answer[305];
double v[305][305];
int main()
{
ios::sync_with_stdio(false);
fin.tie(0); fout.tie(0);
fin>>n>>m;
for ( int i = 1; i <= n; ++i )
for( int j = 1; j <= m+1; ++j )
fin>>v[i][j];
int i = 1;
int j = 1;
while ( i <= n && j <= m )
{
int x;
bool swapped = false;
for ( x = i; x <= n; ++x )
{
if ( v[x][j] >= lim || v[x][j] <= -lim )
{
swapped = true;
break;
}
}
if ( swapped )
{
double auxiliary_Value;
for ( int k = j; k <= m+1; ++k )
swap(v[i][k], v[x][k]);
auxiliary_Value = v[i][j];
for ( int k = j; k <= m+1; ++k )
v[i][k] /= auxiliary_Value;
for ( int u = i+1; u <= n; ++u )
{
auxiliary_Value = v[u][j];
for ( int k = j; k <= m+1; ++k )
v[u][k] -= auxiliary_Value*v[i][k];
}
i++;
j++;
}
else
j++;
}
for ( i = n; i >= 1; --i )
{
for ( j = 1; j <= m+1; ++j )
{
if ( v[i][j] >= lim || v[i][j] <= -lim )
{
if ( j == m+1 )
{
fout<<"Imposibil"<<'\n';
return 0;
}
answer[j] = v[i][m+1];
for ( int k = m; k > j; --k )
answer[j] -= v[i][k]*answer[k];
break;
}
}
}
for ( i = 1; i <= m; ++i )
fout<<fixed<<setprecision(12)<<answer[i]<<" ";
}