Здравствуйте, svrvsvrv!
Вот пример программы:
[code lang=csharp]#include "math.h"
#include "stdio.h"
double u(double x, double a, double b, unsigned long n)
{
double u, d = (sqrt(a*a+1)-2*b)/(3+b*b);
if (d<=-4)
{
u = exp(sqrt((2*x*x-1)/3));
double p = 1;
for (int k=1; k<=n; k++) p *= (1+k)/(k*(x*x+2));
u -= p;
}
else if (d<5)
{
u = acos(fabs(2*x-1)/(1+x*x)) + 7/(8-5*x);
}
else
{
u = log((3*x-2)/(1+x*x))/log(0.2);
for (int k=1; k<=n+2; k++) u += (4*k)/(3+x*x);
}
return u;
}
main()
{
double x, a, b;
unsigned long n;
scanf("%lf %lf %lf %i", &x, &a, &b, &n);
printf("%f", u(x, a, b, n));
}
[/code]
При тестировании программы имейте в виду, что выражение
никогда не принимает значение меньше
-4, поэтому соответствующая ветвь в функции
u не будет использоваться.