Pagini recente » Cod sursa (job #2512333) | Cod sursa (job #80747) | Cod sursa (job #614093) | Cod sursa (job #2306421) | Cod sursa (job #1333078)
#include <fstream>
#include <iomanip>
#define eps 0.00000000001
using namespace std;
int n, m;
float coef[301][301], sol[301];
FILE *infile=fopen("gauss.in", "r");
FILE *outfile=fopen("gauss.out", "w");
void construieste()
{
int i=1, j=1, x;
while(i<=n&&j<=m)
{
for(x=i; x<=n; ++x)
{
if(coef[x][j]>eps||coef[x][j]<-eps)
break;
}
if(x==n+1)
{
j++;
}
else
{
if(x!=i)
{
for(int k=1; k<=m+1; ++k)
swap(coef[i][k], coef[x][k]);
}
for(int k=m+1; k>=j; --k)
{
coef[i][k]/=coef[i][j];
}
for(int k=i+1; k<=n; ++k)
{
for(int p=m+1; p>=j; --p)
coef[k][p]-=coef[k][j]*coef[i][p];
}
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]>eps||coef[i][j]<-eps)
break;
}
if(j==m+1)
{
fprintf(outfile, "Imposibil\n");
x=1;
break;
}
else if(j<=m)
{
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)
{
fprintf(outfile, "%.10f ", sol[i]);
}
fprintf(infile, "\n");
}
}
int main()
{
fscanf(infile, "%d %d", &n, &m);
for(int i=1; i<=n; ++i)
{
for(int j=1; j<=m+1; ++j)
{
fscanf(infile, "%f", &coef[i][j]);
}
}
construieste();
gaseste();
fclose(infile);
fclose(outfile);
return 0;
}