Pagini recente » Cod sursa (job #1594868) | Cod sursa (job #708944) | Cod sursa (job #3173608) | Cod sursa (job #2415076) | Cod sursa (job #973853)
Cod sursa(job #973853)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <bitset>
#include <queue>
#include <deque>
#include <list>
#include <set>
#include <ctime>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
ifstream ff("gauss.in");
ofstream gg("gauss.out");
#define max 303
#define eps 1e-6
int n, m;
double zz[max][max], ss[max];
void gau(){
int i=1, j=1, k;
while(i<=n && j<=m){
for(k=i;k<=n;k++)
if(zz[k][j]>eps || zz[k][j]<-eps) break;
if(k==n+1){ j++; continue; }
if(k!=i)
for(int l=j;l<=m+1;l++) swap(zz[i][l], zz[k][l]);
for(int l=j+1;l<=m+1;l++)
zz[i][l] /= zz[i][j];
zz[i][j]=1;
for(int k=i+1;k<=n;k++){
for(int l=j+1;l<=m+1;l++)
zz[k][l] -= zz[k][j] * zz[i][l];
zz[k][j]=0;
}
i++; j++;
}
for(i=n;i>0;i--){
for(j=1;j<=m+1;j++)
if(zz[i][j]>eps || zz[i][j]<-eps){
if(j==m+1){
gg << "Imposibil\n";
return;
}
ss[j]=zz[i][m+1];
for(int k=j+1;k<=m;k++)
ss[j] -= ss[k] * zz[i][k];
break;
}
}
gg << setprecision(12) << fixed;
for(int i=1;i<=m;i++) gg << ss[i] << " ";
}
int main(){
ff >> n >> m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m+1;j++) ff >> zz[i][j];
gau();
}