Pagini recente » Cod sursa (job #439846) | Cod sursa (job #3037930) | Cod sursa (job #1245964) | Cod sursa (job #969997) | Cod sursa (job #1332740)
#include <fstream>
#include <iomanip>
using namespace std;
int n, m;
float coef[301][301], sol[301];
ifstream in("gauss.in");
ofstream out("gauss.out");
int look_for(int ind, int lin)
{
int k;
for(k=lin; k<=n; ++k)
{
if(coef[k][ind]!=0)
{
return k; break;
}
}
if(k==n+1) return k;
}
void scade(int ind, int col)
{
float inm;
for(int k=ind+1; k<=n; ++k)
{
inm=coef[k][col];
for(int p=col; p<=m+1; ++p)
{
coef[k][p]-=inm*coef[ind][p];
}
}
}
void construieste()
{
int i=1, j=1, x;
while(i<=n&&j<=m)
{
x=look_for(j, i);
if(x==n+1)
{
j++;
}
else
{
float imp=coef[x][j];
for(int k=1; k<=m+1; ++k)
{
swap(coef[i][k], coef[x][k]);
coef[i][k]/=imp;
}
scade(i, j);
i++; j++;
}
}
}
void gaseste()
{
int x=0, j;
for(int i=n; i>0; --i)
{
for(j=1; j<=m+1; ++j)
{
if(coef[i][j]!=0)
break;
}
if(j==m+1)
{
out<<"IMPOSIBIL\n";
x=1;
break;
}
else
{
sol[j]=coef[i][m+1];
for(int k=j+1; k<=m; ++k)
{
sol[j] -= coef[i][k]*sol[k];
}
}
}
if(!x)
{
for(int i=1; i<=m; ++i)
{
out<<fixed<<setprecision(10)<<sol[i]<<" ";
}
out<<"\n";
}
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; ++i)
{
for(int j=1; j<=m+1; ++j)
{
in>>coef[i][j];
}
}
construieste();
gaseste();
in.close();
out.close();
return 0;
}