Pagini recente » Cod sursa (job #1099059) | Cod sursa (job #1026239) | Cod sursa (job #1005400) | Cod sursa (job #392495) | Cod sursa (job #1420712)
#include <cstdio>
FILE* in=fopen("gauss.in","r");
FILE* out=fopen("gauss.out","w");
const int Q=308;
int n,m;
double v[Q][Q];
int sel[Q];
int stv[Q];
double rez[Q];
bool calc[Q];
bool notzero(double x)
{
if(x>0.000000001 || x<-0.000000001)
return 1;
return 0;
}
void raspunde()
{
bool bun=0;
for(int i=1; i<=n; i++)
{
bun=0;
for(int j=1; j<=m; j++)
{
if(notzero(v[i][j]))
{
bun=1;
rez[j]=v[i][m+1]/v[i][j];
}
}
if(bun==0 && notzero(v[i][m+1]))
{
fprintf(out,"Imposibil");
return;
}
}
for(int i=1; i<=m; i++)
fprintf(out,"%lf ",rez[i]);
}
int main()
{
fscanf(in,"%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m+1; j++)
{
fscanf(in,"%lf",&v[i][j]);
}
}
double kept;
for(int k=1; k<=n; k++)
{
for(int f=1; f<=m; f++)
{
if(notzero(v[k][f]))
{
kept=v[k][f];
for(int j=1; j<=m+1; j++)
{
v[k][j]/=kept;
}
for(int i=1; i<=n; i++)
{
if(i==k)
continue;
kept=v[i][f];
for(int j=1; j<=m+1; j++)
{
v[i][j]-=kept*v[k][j];
}
}
break;
}
}
}
raspunde();
return 0;
}