Во входном потоке задано три вещественных числа a (a > 0), b (b < 0), x (-1 < x < 1). Значения исходных данных подобраны так, что выражение имеет смысл. например, 2.4 -4.2 0.6
В выходной поток вывести единственное вещественное число с точностью три знака после запятой. например, 2.425
Написал код, для значений из примера работает верно, но если x поменять на 0.5, то выводит ошибку (-nan).
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double a,b,x,p,sum=0;
cin >> a >> b >> x;
if ((1.2+8*x)<105)
{
for (double m=(8*x+1.2);m<=105.0;m++)
{
sum+=(pow((-1),m)*m+a)/(m*(m+1));
}
}
p=(x-b)/(a+b);
p=pow(p,3);
p=sin(p)/cos(p);
p=pow(p,3)*sum;
p=p+(pow((x+pow(a,2)),1.0/2.0))/(x*pow((1-b),1.0/3.0));
cout << fixed << setprecision(3) << p;
}
У вас получается возведение отрицательного числа в дробную степень
pow((-1),m)
при вашем значении x
. У вас именно исходя из этого - наличия -1
в степени m
эта переменная не может быть double
, а вычисления должны проводиться при условии
Значения исходных данных подобраны так, что выражение имеет смысл
которое вы нарушили.
Впрочем, считать сумму таким образом - не то чтобы совсем некорректно... но ужасно некрасиво.
P.S. Для тангенса есть своя функция - tan()
.
P.P.S. Ваш ряд я бы считал иначе -
Виртуальный выделенный сервер (VDS) становится отличным выбором
Старый пират Пью спрятал свое золото, но для надежности не в одном месте, а частями в нескольких тайникахНо чтобы не забыть места хранения...
Дан линейный массив на N элементовВыполнить циклический сдвиг всех его элементов на один влево начиная с первого нулевого элемента
Хочу подключить библиотеку variant (Которая на некоторых сайтах указывается как стандартная и есть на С++17), но мне выдает ошибку No such file or directory