/*
Напишите программу, которая вычисляет число ПИ с заданной
пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9 ...
при суммировании достаточно большого количества членов приближается к значению ПИ/4 . Количество членов равно 502.
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
#include <iomanip>
using namespace std;
void main(void)
{
setlocale(LC_ALL,".1251");
double PI = 0.0; //Сюда как раз и будем вычислять PI
int Iterat; //Кол-во членов ряда для вычисления (вариант 1)
double Esp; //Точность вычисления (вариант 2)
unsigned long delit = 1; //Делитель члена ряда
int Variant; //Опция выбора варианта
unsigned long i = 0; //Число итераций
//Ввод варианта вычисления
cout<<"Введите опцию вычисления (1 - кол-во членов ряда, 2 - заданная точность) : ";
cin>>Variant;
if (Variant == 1) //Если вычисляем по сумме членов ряда
{
cout << "Введите заданную точность вычисления (кол-во чл. ряда) :";
cin >> Iterat;
for (i = 0; i< Iterat; i++)
{
if (i %2 == 0)
PI+= (double)4/delit;
else PI-= (double)4/delit;
delit+=2;
}
}
else if (Variant == 2) //Если вычисляем по заданной точности
{
cout << "Введите заданную точность вычисления (0.00000001) : ";
cin >> Esp; //Введем точность
double Ryad = 4; //Текуйщи член ряда
while (Ryad > Esp) //Пока текущий член ряда > нашей заданной точности
{
Ryad = (double)4/delit; //Вычислим член ряда
if (i %2 == 0)
PI+= Ryad;
else PI-= Ryad;
delit+=2;
i++;
}
}
cout<<"Результат : "<<setprecision(15)<< PI << endl;
cout<<"Итераций : "<< i << endl;
}