Помогите исправить код
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε . Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.
икс меняется от а до b
a=-0.8
b=0.9
ε =0.0001
формулы Y(x) и S(x) на скрине ниже
делал по примеру другой задачи, вышел вот этот код (он работает не правильно) скажите что в нем не так?
#include
#include
#include
using namespace std;
typedef double (*uf)(double, double, int &);
void tabl(double, double, double, double, uf);
double y(double, double, int &);
double s(double, double, int &);
int main()
{
cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl;
tabl(-0.8,0.9,0.1,0.0001,y);
cout << endl;
cout << setw(8) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ;
tabl(-0.8,0.9,0.1,0.0001,s);
return 0;
}
void tabl(double a, double b, double h, double eps, uf fun)
{
int k=0;
double sum;
for (double x=a; x<b+h/2; x+=h)
{
sum=fun(x,eps,k);
cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;
}
}
double y(double x, double eps, int &k)
{
return pow(x+1,0.25)-((4-x)/4);
}
double fact(double inpt)
{
double outpt = 1;
int i;
for(i = 1; i <= fabs(inpt); i++)
{
outpt *= i;
}
return outpt;
}
double s(double x, double eps, int &k)
{
double a,c,sum;
sum=a=c=x;
k=1;
while (fabs(c)>eps)
{
int tet= fact(fact(4*k-5));
int kek= fact(fact(4*k));
c = pow(-1., k-1)*tet*pow(x,2)/kek;
a *= c;
sum += a;
k++;
}
return sum;
}

отлаживать надо. поэтапно проводите проверку. воспользуйтесь дебаггером.