Pagini recente » Cod sursa (job #2548050) | Cod sursa (job #348683) | Cod sursa (job #1978060) | Cod sursa (job #1721635) | Cod sursa (job #2090277)
#include<fstream>
#include<iomanip>
#define ok 0.0000001
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int n,m,i,j,o,k,q;
double aux,sol[305],v[305][305];
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=m+1;j++){
fin>>v[i][j];
}
}
i=1;
j=1;
while(i<=n&&j<=m){
for(o=i;o<=n;o++){
if(v[o][j]!=0){
break;
}
}
if(o==n+1){
j++;
continue;
}
if(o!=i){
for(k=1;k<=m+1;k++){
aux=v[i][k];
v[i][k]=v[o][k];
v[o][k]=aux;
}
}
for(o=j+1;o<=m+1;o++){
v[i][o]/=v[i][j];
}
v[i][j]=1;
for(o=i+1;o<=n;o++){
for(k=j+1;k<=m+1;k++){
v[o][k]-=v[i][k]*v[o][j];
}
v[o][j]=0;
}
i++;
j++;
}
for(i=n;i>=1;i--){
for(j=1;j<=m+1;j++)
if(v[i][j]<-ok || v[i][j]>ok){
break;
}
if(j==m+2){
continue;
}
if(j==m+1){
q=-1;
break;
}
sol[j]=v[i][m+1];
for(k=j+1;k<=m;k++){
sol[j]-=sol[k]*v[i][k];
}
}
if(q==-1){
fout<<"Imposibil";
return 0;
}
for(i=1;i<=m;i++){
fout<<setprecision(9)<<fixed<<sol[i]<<" ";
}
return 0;
}