Pagini recente » Cod sursa (job #2649384) | Cod sursa (job #668888) | Cod sursa (job #2803447) | Cod sursa (job #99395) | Cod sursa (job #1541519)
#include <cstdio>
#define EPS 0.0000001
#define MAXN 300
#define MAXM 300
double a[MAXN+1][MAXM+2], x[MAXM+1];
int main(){
int n, m, i, j, p, q, l, f, r;
double aux;
FILE *fin, *fout;
fin=fopen("gauss.in", "r");
fout=fopen("gauss.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=n; i++){
for(j=1; j<=m+1; j++){
fscanf(fin, "%lf", &a[i][j]);
}
}
i=1;
j=1;
f=1;
while((i<=n)&&(j<=m)&&(f==1)){
f=1;
l=i;
while((l<=n)&&((a[l][j]<EPS)&&(a[l][j]>-EPS))){
l++;
}
if(l==n+1){
j++;
f=0;
}else{
if(i!=l){
for(p=1; p<=m+1; p++){
aux=a[i][p];
a[i][p]=a[l][p];
a[l][p]=aux;
}
}
for(p=j+1; p<=m+1; p++){
a[i][p]/=a[i][j];
}
a[i][j]=1;
for(p=i+1; p<=n; p++){
for(q=j+1; q<=m+1; q++){
a[p][q]-=a[p][j]*a[i][q];
}
a[p][j]=0;
}
}
i++;
j++;
}
r=1;
i=n;
while((i>0)&&(r==1)){
j=1;
f=1;
while((j<=m+1)&&(f==1)){
if((a[i][j]>EPS)||(a[i][j]<-EPS)){
if(j==m+1){
r=0;
}
f=0;
x[j]=a[i][m+1];
for(l=i+1; l<=m; l++){
x[j]-=x[l]*a[i][l];
}
}
j++;
}
i--;
}
if(r==0){
fprintf(fout, "Imposibil\n");
}else{
for(i=1; i<=m; i++){
fprintf(fout, "%.8lf ", x[i]);
}
fprintf(fout, "\n");
}
fclose(fin);
fclose(fout);
return 0;