с++ вычислить значение выражения

151
30 июля 2019, 12:50

Найти значение выражения. Пример входных данных: 2.4 -4.2 0.6 Пример выходных данных 4,726

По-ходу делаю что-то не то. Понятия не имею, как считать сигму. Прошу помощи, как должно быть верно?

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
  double a,b,x,p,sum=0,n;
  cin >> a >> b >> x;
  n=10*x;
  for (int i=n;i<(-10*b);i++)
  {
    sum+=(pow((-1),(n+1))*pow(n,1.0/2.0))/(n*(n+2));
  }
  p=b/2*x;
  p=cos(p)/sin(p);
  p=pow(p,3)*sum;
  p=p+pow((abs(1-x*exp(x-b))),1.0/3.0);
  cout << fixed << setprecision(3) << p;
  return 0;
}
Answer 1

Уравнение имеет решение, если b<0, x !=0 , 10*x < -10*b , 10*x>0 и -10* b>0

#include <iostream>
#include <cmath>
#include <iomanip>
#include <QDebug>
using namespace std;
double b,x;
void cinB() {
    cin >> b;
    if (b>=0) {
       cout <<"Input b<0";
       cin >> b ;
    }
}
void cinX() {
    cin>>x;
    if (x<=0) {
        cout <<"Input x>0";
        cin >> x ;
    }
}
void cinXB () {
    if (10*x>=-10*b) {
        cout <<"It should be: 10*x<-10*b";
        cinB();
        cinX();
        cinXB();
    }
}
int main()
{
  double P,sum=0;
  cinB();
  cinX();
  cinXB();
  if (10*x<-10*b) {
      for (double n=10*x;n<(-10*b);n=n+1)
      {         
         sum+=(pow((-1),(n+1))*pow(n,1/2))/(n*(n+2));
         qDebug()<<sum<<n;
      }
      qDebug()<<"10*x<-10*b"<<sum;
  }
  P=pow((abs(1-x*exp(x-b))),1/3)+cos(b/2*x)/sin(b/2*x)*sum;
  cout <<"P="<<P;
  return 0;
}

У вас n должно быть не равно нулю и -2 иначе деление на ноль: У меня получилось, значение 1.00373, если ввожу b=-4.2,x=0.6 Может я где то ошибся и кто то укажет где. И у вас "a" не как не участвует в расчётах!

Answer 2
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
  double a,b,x,p,sum=0,n;
  cin >> a >> b >> x;
  if ((10*x)<(-10*b))
  {
    for (double n=10*x;n<=(-10*b);n++)
    {
      sum+=(pow((-1),(n+1))*pow(n,1.0/2.0))/(n*(n+2));
    }
  }
  p=b/(2*x);
  p=cos(p)/sin(p);
  p=pow(p,3)*sum;
  p=pow((abs(1-x*exp(x-b))),1.0/3.0)+p;
  cout << fixed << setprecision(3) << p;
  return 0;
}
READ ALSO
Как прочитать файл с исходником на ideone?

Как прочитать файл с исходником на ideone?

Не могу понять, где относительно исполняемого файла лежит файл с исходным кодом

118
Как скомпилировть/собрать библиотеку XLNT?

Как скомпилировть/собрать библиотеку XLNT?

Скачал библиотеку xlnt для работы с екселем - https://githubcom/tfussell/xlnt

150
Что не так с объектной моделью в С++? [закрыт]

Что не так с объектной моделью в С++? [закрыт]

Прочитал мнение Линуса Торвальдса о С++:

141
Как вывести символы из массива в lineEdit qt?

Как вывести символы из массива в lineEdit qt?

Есть буквенный массив и нужно из него вывести поочереди букву в lineEditui->lineEdit->setText(); если выводить с помощью setText то буквы будут поочереди заменять...

161