Цикл не останавливается
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
int k; long double sum2,x,e,y=0,sum;
cout << "Введите точность вычисления:" << endl;
cin >> e;
for (x=1; x<=10;x+=1)
{k=0;sum=0;
while(1) {
sum2=sum;
y = (pow(-1, k) * pow(x, 2 * k + 1)) / (2 * k + 1);
cout << "y"<< y <<endl;
sum += y;
if(fabs(sum-sum2)<=e){
break;}
k++;
}
cout << endl << "atan("<<setprecision(1) << x <<")="<<setprecision(10)<<sum;
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ваш ряд сходится только при
|x| < 1
поэтому программа и не работает.
Только вот считать через pow - это просто издевательство! Cм., например, этот вопрос.