Pagini recente » Cod sursa (job #2491190) | Cod sursa (job #322221) | Cod sursa (job #2607310) | Cod sursa (job #872915) | Cod sursa (job #3000301)
#include <fstream>
using namespace std;
ifstream cin ("gauss.in");
ofstream cout ("gauss.out");
int n,m;
double s[305][305];
double nr[305];
bool rasp =true;
void gauss()
{
int i,j,k;
for (i=1,j=1;i<=n && j<=m;)
{
for (k=i;k<=n;k++)
if (s[k][j]!=0)
break;
if (k==n+1)
{
j++;
continue;
}
int l;
if (k!=i)
for (l=1;l<=m+1;l++)
swap(s[i][l],s[k][l]);
for (k=i+1;k<=n;k++)
for(l=m+1;l>=j;l--)
s[k][l] = s[k][l] - ((s[k][j]*s[i][l])/s[i][j]);
i++;
j++;
}
for (i=n;i;i--)
for(j=1;j<=m+1;j++)
{
if (s[i][j] < 0.0000000001)
continue;
if (j==m+1)
{
rasp = false;
cout << "Imposibil";
return;
}
nr[j] = s[i][m+1];
for (k=j+1;k<=m;k++)
nr[j] = nr[j] - s[i][k]*nr[k];
nr[j] = nr[j]/s[i][j];
break;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int i,j;
cin >> n >> m;
for (i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
cin >> s[i][j];
gauss();
if (rasp == false)
return 0;
for (i=1;i<=m;i++)
cout << nr[i] << ' ';
return 0;
}