Задача: Вычисление числа ПИ

Тема в разделе "C/C++/C#", создана пользователем KOPC1886, 25 ноя 2010.

Статус темы:
Закрыта.
  1. KOPC1886

    KOPC1886 Гость

    Пожалуйста можете помочь с задачей. Напишите программу, которая вычисляет число ПИ с заданной
    пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9 ... при суммировании достаточно большого количества членов приближается к значению ПИ/4 . Количество членов равно 502.
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    KOPC1886
    Я тебе помогу, если ты что-то попытаешься сделать сам. Предлагай свои попытки, иначе тебе просто предложат сделать это за деньги, а в случае отказа тупо проигнорируют... Таковы правила форума.

    Добавлено: Есть мысли?
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Здесь нужен цикл. Пиши, я тебе скажу что делать дальше.
     
  4. flashkpi

    flashkpi Гость

    Если не хочешь пытаться, тебе ко мне -)))
    icq: 588002847
    email: flash_1989@ukr.net
     
  5. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Если не то, и не то:

    Код (C++):
    #include <stdlib.h>
    #include <stdio.h>

    int main(){
    double Sum=0;
    unsigned long long i,n;

    printf("n=");
    scanf("%I64u",&n);/* для Linux: scanf("%llu",&n);*/
    for (i=0;i<n;i++){
    Sum+=(1.0/(1.0+2.0*i))*((i%2==0) ? 1:(-1));
    }
    Sum*=4;
    printf("Sum=%lf",Sum);
    return 0;
    }
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Вообще ваше кол-во членов 502: Не говорит ни о чем, вовсяком точно не о числе PI (см. скины какая погрешность)
    На втором скине я вычислял с точностью 10^-13 честно сказать, задолбался ждать пока посчитает (секунд 40 наверное(это при условии что delit-делитель тогда был int-типа и в нем наступило переполнение, а вот когда он unsigned long - еще считается ;-)), а кол-во итераций там видите насколько разнитца с вашим 502...
    Код (C++):
    /*
    Напишите программу, которая вычисляет число ПИ с заданной
    пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 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;

    }
     

    Вложения:

    • pitochnost1.jpg
      pitochnost1.jpg
      Размер файла:
      37,5 КБ
      Просмотров:
      61
    • pitochnost2.jpg
      pitochnost2.jpg
      Размер файла:
      38,2 КБ
      Просмотров:
      64
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Прошло минут 40-50 (см. скин 1)
    Данные проца (см. ск 2)
     

    Вложения:

    • PI_.jpg
      PI_.jpg
      Размер файла:
      105,8 КБ
      Просмотров:
      61
    • Proc.jpg
      Proc.jpg
      Размер файла:
      37 КБ
      Просмотров:
      60
  8. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Эх, а оно все вычисляет мать ее ;-))
    Я уже спать хочу если честно.. ;-)
    P.S. Бедные люди которые до 16 знаков в 15ом веке вычисляли число ПИ :)
     

    Вложения:

    • Pi2.jpg
      Pi2.jpg
      Размер файла:
      225,6 КБ
      Просмотров:
      52
Загрузка...
Похожие Темы - Задача Вычисление числа
  1. dimon131
    Ответов:
    1
    Просмотров:
    6.047
  2. Янчик
    Ответов:
    0
    Просмотров:
    486
  3. TrishaRay
    Ответов:
    1
    Просмотров:
    782
  4. elzim
    Ответов:
    0
    Просмотров:
    931
  5. ShaoKahn
    Ответов:
    1
    Просмотров:
    1.125
Статус темы:
Закрыта.

Поделиться этой страницей