Pagini recente » Cod sursa (job #1148827) | Cod sursa (job #1469912) | Cod sursa (job #2904404) | Cod sursa (job #2607218) | Cod sursa (job #1026640)
#include <fstream>
#include <cstdio>
using namespace std;
ifstream f("gauss.in");
FILE *g=fopen("gauss.out","w");
int n,m;
double a[311][311];
double sol[311];
int main(void){
register int i,j,t,k,p1,p2;
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
f>>a[i][j];
for(t=1;t<n;t++){
for(k=t+1;k<=n;k++){
if(a[t][t]==a[k][t])
p1=-1,p2=1;
else if(a[t][t]==-a[k][t])
p1=p2=1;
else if((a[t][t]>0 && a[k][t]>0)||(a[t][t]<0 && a[k][t]<0))
p1=a[k][t],p2=-a[t][t];
else if(a[t][t]>0 && a[k][t]<0)
p1=-a[k][t],p2=a[t][t];
else if(a[t][t]<0 && a[k][t]>0)
p1=a[k][t],p2=-a[t][t];
for(i=1;i<=m+1;i++)
a[k][i]=a[t][i]*p1+a[k][i]*p2;
}
}
sol[n]=(double)a[n][n+1]/a[n][n];
for(i=n-1;i>0;i--){
for(j=i;j>0;j--)
a[j][n+1]-=sol[i+1]*a[j][i+1];
sol[i]=(double)a[i][n+1]/a[i][i];
}
for(i=1;i<=n;i++)
fprintf(g,"%.8f ",sol[i]);
f.close();
fclose(g);
return 0;
}