Pagini recente » Cod sursa (job #2741648) | Cod sursa (job #409512) | Rating Rares Cozma (BurgundyShadow) | Cod sursa (job #2272176) | Cod sursa (job #872952)
Cod sursa(job #872952)
#include<stdio.h>
#include<math.h>
#define er 0.0000000000001
double a[305][305],x[305];
int n,m;
void cit(){
FILE *f;
f=fopen("gauss.in","r");
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m+1;j++)
fscanf(f,"%lf",&a[i][j]);
fclose(f);
}
void reduc(){
int i,j,k,l;
double b;
i=j=1;
while(i<=n&&j<=m){
for(k=i;k<=n;k++)
if(fabs(a[k][j])>=er)
break;
if(k==n+1)
j++;
else{
for(l=j;l<=m+1;l++){
b=a[i][l];
a[i][l]=a[k][l];
a[k][l]=b;
}
b=a[i][j];
for(l=j;l<=m+1;l++)
a[i][l]/=b;
for(k=i+1;k<=n;k++){
b=a[k][j];
for(l=j;l<=m+1;l++)
a[k][l]-=b*a[i][l];
}
i++;
j++;
}
}
}
void sol(){
FILE *f;
int i,j,k;
f=fopen("gauss.out","w");
for(i=n;i>=1;i--){
for(j=1;j<=m+1;j++)
if(fabs(a[i][j])>er)
break;
if(j==m+1){
fprintf(f,"Imposibil\n");
fclose(f);
return ;
}
x[j]=a[i][m+1];
for(k=j+1;k<=m;k++)
x[j]-=x[k]*a[i][k];
}
for(i=1;i<=m;i++)
fprintf(f,"%0.8lf ",x[i]);
fclose(f);
}
int main(){
cit();
reduc();
sol();
return 0;
}