Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > ошибка в вывполнении рограммы с бесконечной суммой


Автор: vancha94 31.8.2011, 15:38
Здравствуйте.
В учебнике по C++ было задание написать функцию для вычисления синуса, была дана бесконечная сумма, но код выдает неожиданный результат.
Код

#include <iostream>
using namespace std;
const int N=100;

int main()
{
   double x,q,s=0;
   int n;
   cout<<"Enter x = ";
   cin>>x;
   q = x;
   for(n=1;n<=N;n++){
      s+ = q;
      q* =(-1) * x * x / ( 2 * n ) / ( 2 * n + 1 );
}
  cout<<"sin("<<x<<") = "<<s;
  return 0;
}

При вводе значения 30,  результат не 0.5 а что-то по модулю больше единицы.
http://s2.ipicture.ru/
Вопрос: почему так происходит и как это исправить?
Помогите пожалуйста.
Заранее спасибо.
P.S. код тот, который был предложен в книге.

Автор: bsa 31.8.2011, 16:22
А этот код вообще компилируется? Просто ты у операторов += и *= поставил пробел между символами.
все тригонометрические функции считаются в оригинале для РАДИАНОВ, а не градусов. Соответственно, если ты перед строкой 11 вставишь: 
Код
x *= 3.1415926535897932384626433832795/180;
то все должно получиться.

Автор: vancha94 31.8.2011, 16:37
Помогло, спасибо огромное

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)