Я делаю еще одно упражнение на С++. Мне нужно вычислить значение числа пи из бесконечного ряда:
pi=4 - 4/3 + 4/5 – 4/7 + 4/9 -4/11+ . . .
Программа должна вывести приблизительное значение числа пи после каждого из первых 1000 членов этого ряда. Вот мой код:
#include <iostream>
using namespace std;
int main()
{
double pi=0.0;
int counter=1;
for (int i=1;;i+=2)//infinite loop, should "break" when pi=3.14159
{
double a=4.0;
double b=0.0;
b=a/static_cast<double>(i);
if(counter%2==0)
pi-=b;
else
pi+=b;
if(i%1000==0)//should print pi value after 1000 terms,but it doesn't
cout<<pi<<endl;
if(pi==3.14159)//this if statement doesn't work as well
break;
counter++;
}
return 0;
}
Компилируется без ошибок и предупреждений, но после выполнения появляется только пустое консольное окно. Если я удалю строку «if(i%1000==0)», я увижу, что она запускается и печатает каждое значение pi, но не останавливается, что означает, что второй оператор if тоже не работает. Я не знаю, что еще делать. Я предполагаю, что это, вероятно, простая логическая ошибка.