Pagini recente » Cod sursa (job #3195521) | Cod sursa (job #1538758) | Cod sursa (job #2347308) | Cod sursa (job #2639906) | Cod sursa (job #608623)
Cod sursa(job #608623)
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <iomanip>
#include <cmath>
#define DN 305
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m,ind[DN];
double a[DN][DN],rez[DN];
void bagaZero() {
int i,j,l,p,k,u;
double vp;
for(i=1; i<=n; ++i) ind[i]=i;
for(i=1; i<n; ++i) {
p=i; vp=abs(a[ind[i]][i]);
for(l=i+1; l<=n; ++l) if(abs(a[ind[l]][i])>vp) vp=abs(a[ind[l]][i]),p=i;
swap(ind[p],ind[i]);
for(j=i+1;j<=n; ++j) {
u=a[ind[j]][i]/a[ind[i]][i];
for(k=i; k<=n+1; ++k) a[ind[j]][k]=(-u)*a[ind[i]][k]+a[ind[j]][k];
}
}
}
void rezSsTr() {
int i,j;
double s;
rez[n]=a[ind[n]][n+1]/a[ind[n]][n];
for(i=n-1; 0<i; --i) {
s=a[ind[i]][n+1];
for(j=i+1; j<=n; ++j) s-=a[ind[i]][j]*rez[j];
rez[i]=s/a[ind[i]][i];
}
}
int main()
{
f>>n>>m;
for(int i=1; i<=n; ++i) for(int j=1; j<=m+1; ++j) f>>a[i][j];
bagaZero();
rezSsTr();
for(int i=1; i<=n; ++i) g<<rez[ind[i]]<<' ';
return 0;
}