Pagini recente » Cod sursa (job #572632) | Istoria paginii runda/tema33 | Diferente pentru preoni-2007/runda-finala/poze/la-masa intre reviziile 1 si 5 | Cod sursa (job #2018882) | Cod sursa (job #1806310)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
using namespace std;
void esalon(vector<vector<double> > &a,int n)
{
double k;
for(int i=0;i<n-1;i++)
{
if (a[i][i]==0)
{
k=0;
for (int j=i+1;j<n;j++)
{
if (a[j][i]!=0)
{
k=j;
}
}
if (k!=0)
{
for (int j=0;j<n+1;j++)
{
swap(a[i][j],a[k][j]);
}
}
else
{
continue;
}
}
for (int j=i+1;j<n;j++)
{
k=-a[j][i]/a[i][i];
for (int l=i;l<n+1;l++)
{
a[j][l]=a[j][l]+a[i][l]*k;
}
}
}
}
void sol(vector<double> &v,vector<vector<double> >a,int n)
{
for (int i=n-1;i>=0;i--)
{
double s=0;
for (int j=i+1;j<n;j++)
{
s=s+a[i][j]*v[j];
}
if (a[i][i]!=0)
{
v[i]=(a[i][n]-s)/a[i][i];
}
else {v[i]=0;}
}
}
ifstream in("gauss.in");
ofstream out("gauss.out");
main()
{
vector<double>x(4);
vector<vector<double> > a(3);
fill(a.begin(),a.end(),x);
int n=3;
for (int i=0;i<n;i++)
{
for (int j=0;j<n+1;j++)
{
in>>a[i][j];
}
}
esalon(a,n);
vector<double> s(n);
sol(s,a,n);
for (int i=0; i<n; i++)
{
out<<fixed<<setprecision(12)<<s[i]<<" ";
}
}