Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.76
venox
1 / 1 / 0
Регистрация: 08.01.2013
Сообщений: 26
#1

Написать программу которая вычисляет число пи с заданной точностью - C++

16.09.2013, 11:46. Просмотров 3748. Ответов 24
Метки нет (Все метки)

написать программу которая вычисляет число пи с заданной точностью, если известно 1-1/3+1/5-1/7+... при суммировании большого количества членов приближается к ПИ/4.Вывести сумму и количество членов ряда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 11:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу которая вычисляет число пи с заданной точностью (C++):

Написать программу, которая вычисляет значение e^2 с точностью до 0,001 - C++
Помогите решить такое задание: 1. Написать программу, которая вычисляет значение e2(здесь квадрат) с точностью до 0,001. Известно, что ...

Написать программу, которая вычисляет значение sin(6\o ) з точностью до 0,001 - C++
Помогите решить такую задачку: Написать программу, которая вычисляет значение sin(6 градусов) з точностью до 0,001. Известно, что ...

Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика - C++
Здравствуйте! Помогите пожалуйста написать программу на C++ согласно заданию. Задание: Написать программу, которая по введенному...

Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, - C++
Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо...

Написать программу, которая вычисляет, сколько раз введенное с клавиатуры число встречается в массиве - C++
2.Написать программу, которая вычисляет, сколько раз введенное с клавиатуры число встречается в массиве. 3.Напишите программу, которая...

Написать программу, которая предлагает пользователю ввести число, вычисляет его разрядность и сумму всех цифр и выводить результаты в консоль - C++
Help! Написать программу, которая предлагает пользователю ввести число, вычисляет его разрядность и сумму всех цифр и выводить...

24
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
16.09.2013, 12:00 #2
Что конкретно у тебя не получается? Где код?
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
16.09.2013, 12:21 #3
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
 
int main()
{
    float presition;
    float sum = 1;
    int k = 1;
    system ("chcp 1251>0");
    std::cout << "Введите требуемую точность: " ; std::cin >> presition;
 
    do
                sum += (1.0 - 2.0 * (k%2)) / (2 * k + 1);
    while (1.0 / (2 * ++k + 1) > presition / 4);
 
    std::cout << 4 * sum << std::endl;
    system("pause");
    return 0;
}
1
Catstail
Модератор
22732 / 11101 / 1797
Регистрация: 12.02.2012
Сообщений: 18,297
16.09.2013, 13:20 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
 
double Piq(double eps, double s=0, int k=0,int g=1)
{
    double p;
    p=1.0/(2*k+1);
    s+=p*g;
    if (p < eps) 
    {
        cout <<  "Number of elemets = " << k << endl;
        return s;
    }
    return Piq(eps,s,k+1,-g); 
}
 
int main(int argc, char* argv[])
{
    double Pi=4*Piq(0.0001);
    cout << Pi << endl;
    return 0;
}
Добавлено через 58 минут
Цитата Сообщение от Ilot Посмотреть сообщение
presition
- не "presition", а precision
2
Raali
16.09.2013, 13:39
  #5

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
- не "presition", а precision
неточность в слове "точность"

1
Ilot
16.09.2013, 14:12
  #6

Не по теме:

поФиг. Главное мой алгоритм проще и наглляднее.

0
Catstail
Модератор
22732 / 11101 / 1797
Регистрация: 12.02.2012
Сообщений: 18,297
16.09.2013, 14:21 #7
Цитата Сообщение от Ilot Посмотреть сообщение
Главное мой алгоритм проще и наглляднее.
- (без обид) - не сказал бы...

У тебя каждый виток цикла выполняет (по сравнению с моим) лишнее умножение с плавающей точкой, лишнее вычитание и лишнее вычисление остатка. Правда, оперативной памяти твой код требует меньше.

Кстати, ТС просил еще напечатать к-во членов ряда.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
16.09.2013, 14:37 #8
Catstail, никто не мешает ввести новую переменную, но замечание верное сам обратил внимание но из-за особенностей данного форума отредактировать пост не мог:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
 
int main()
{
    float presition;
    float sum = 0.0, pred = 1.0;
    int k = 0;
    system ("chcp 1251>0");
    std::cout << "Введите требуемую точность: " ; std::cin >> presition;
 
    do
    {
        sum += (1.0 - 2.0 * (k%2)) * pred;
    }
    while ( (pred = 1.0 / (2 * ++k + 1)) > presition / 4);
 
    std::cout << 4 * sum << std::endl;
    system("pause");
    return 0;
}
А вызов ф-и не требует машинного времени?
Кстати, ТС просил еще напечатать к-во членов ряда.
C++
1
    std::cout << k << std::endl;
1
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
16.09.2013, 14:42 #9
Цитата Сообщение от Ilot Посмотреть сообщение
А вызов ф-и не требует машинного времени?
еще как требует. к тому же при каждом вызове функции все ее параметры помещаются в стек. а это тоже лишние затраты
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
16.09.2013, 14:43 #10
Цитата Сообщение от _ Посмотреть сообщение
еще как требует. к тому же при каждом вызове функции все ее параметры помещаются в стек. а это тоже лишние затраты
Вот и я о том же.
0
Catstail
Модератор
22732 / 11101 / 1797
Регистрация: 12.02.2012
Сообщений: 18,297
16.09.2013, 14:58 #11
Окончательный ответ, какой подход производительнее, может дать только развернутый тест.
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 15:14 #12
Современные компиляторы умеют производить оптимизацию хвостовой рекурсии. Так что никаких лишних затрат у рекурсивной реализации не будет
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
16.09.2013, 15:48 #13
Ну что начнем бадаться?
Во-первых у вас ряд синтаксических ошибок ну да ладно. Во-вторых, на моем компьютере ваша программа дохнет при точности 10-5, а моя ведет себя адекватно и при 10-30. А все потому, что стек ограничен и не столь лоялен к перерасходу памяти. За сим откланиваюсь или у вас есть еще аргументы?
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 16:01 #14
Какие тут могут быть аргументы-то? Все и так очевидно, рекурсия более декларативна и при этом так же эффективна как и циклы. Единственный её минус в том, что не все компиляторы поддерживают tail-call оптимизацию
0
Vasya2195
Сообщений: n/a
26.05.2014, 10:39 #15
А просто на СИ напишите пожалуйста эту программу)
26.05.2014, 10:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2014, 10:39
Привет! Вот еще темы с ответами:

Напишите программу, которая по заданной входной последовательности вычисляет ее медиану - C++
Кароче такое задание: Напишите программу, которая по заданной входной последовательности вычисляет ее медиану. нашел в интернете эту...

Написать программу, которая вычисляет условие > - C++
Помогите. Написать программу на С++, которая вычисляет условие

Написать программу, которая вычисляет выражение - C++
Помогите Написать программу, которая вычисляет выражение.

Написать программу, которая вычисляет выражение - C++
Помогите. Написать программу, которая вычисляет выражение.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru