Я пытаюсь аппроксимировать pi с помощью цикла for. Пользователь вводит количество итераций n, и программа должна получать все большее значение начисления для pi с каждой дополнительной итерацией. У меня есть вложенная структура управления "if", которая проверяет, является ли "i" четным или нечетным. Однако, когда мой цикл повторяется после первого запуска, мое значение для pi не меняется. Pi остается на уровне 1 в контуре, а конечный выход равен 4. Я должен использовать ряд приближений:Оценка pi с C++ для цикла
pi = 4 [1 - 1/3 + 1/5 + ... + 1/(2n- 1) + 1/(2n + 1)].
Что я делаю неправильно?
int _tmain(int argc, _TCHAR* argv[])
{
double pi = 0;
long i;
int n;
cout << "Enter the value of n: "; //prompt for input
cin >> n; //store input in "n"
cout << endl; //end line
for (i = 0; i < n; i++)
{
if (i % 2 == 0) //if even
pi = pi + (1/(2 * i + 1));
else //if odd
pi = pi - (1/(2 * i + 1));
}
pi = 4 * pi; //multiply by 4
cout << endl << "pi = " << pi << endl; //display result
system("Pause"); //pause program
return 0; //close program
Integer division.'x/y' является '0' для пары целых чисел с' x
Zeta
Некоторые вещи кода: а) Не привыкайте к этому '_t', лучше забудьте об этом полностью. б) Отступы. – deviantfan
На основе приведенной серии примеров цикл for должен быть | для (i = 0; i <= n; i ++) | , Было бы немного более точным, если бы вы сделали меньшие числа в первую очередь: | для (i = n; i> = 0; i--) | , – rcgldr