Консультация № 199481
31.10.2020, 19:02
0.00 руб.
1 6 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Помогите, пожалуйста, составить программу для вычисления функции. Нужно очень-очень срочно.
Заранее спасибо!
Прикрепленные файлы:
130520fa4741b639b28c29184aac106d484a4d83.JPG

Обсуждение

давно
Старший Модератор
312929
1973
01.11.2020, 08:14
общий
это ответ
Здравствуйте, 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 не будет использоваться.
5
давно
Посетитель
399424
894
01.11.2020, 12:05
общий
Адресаты:
Огромное Вам спасибо за помощь!
Скажите только, пожалуйста: почему программа выдаёт такое?
Прикрепленные файлы:
69dacfdc1320c1678d5deb2aeb96e1f1.JPG
давно
Посетитель
399424
894
01.11.2020, 12:05
общий
Адресаты:
Или я где-то в самом написании программы ошибся?
давно
Старший Модератор
312929
1973
01.11.2020, 13:08
общий
Адресаты:
Попробуйте скомпилировать программу не в отладочном режиме. Будет ли то же самое?
давно
Старший Модератор
312929
1973
01.11.2020, 13:10
общий
Адресаты:
Ещё уберите return u в конце.
давно
Посетитель
399424
894
01.11.2020, 13:59
общий
Адресаты:
Попробовал, всё равно выдаёт, что u неинициализированная переменная. Я не понимаю, почему он считает её неинициализированной...
Форма ответа