Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2017, 02:31   #1
Jura_Franasyuk
 
Регистрация: 25.10.2017
Сообщений: 8
По умолчанию Не запускается цикл "while" - C++

Задание:
"Написать программу вычисления суммы членов последовательности, задаваемой формулой ...
Суммирования членов ряда проводить до тех пор, пока |an|≥eps, eps = 0.0005."

Не запускается цикл "while" что не так?

Код:
#include <iostream>
#include <math.h>
 
using namespace std;
 
long double factorial(int N)
{
    if (N < 0) return 0;
    if (N == 0) return 1;
    else return N * factorial(N - 1);
}
 
 
int main()
{
    const double eps = 0.0005;
    double an = 0 , n = 1, sum = 0;
 
    while (fabs(an) >= eps)
    {
        an = pow(-1, n) / 2 * factorial(n);
        n++;
        sum += an;
    }
    cout << sum << endl;
 
    system("pause");
    return 0;
}
Изображения
Тип файла: png 1.png (5.6 Кб, 26 просмотров)
Jura_Franasyuk вне форума Ответить с цитированием
Старый 05.11.2017, 03:08   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

А если подумать? Какое условие в цикле? И какое начальное значение у an?

Вообще-то подобные задачи обычно предполагают, что Вы не будете каждый раз считать степень и факториал заново, а будете вычислять следующий член на основе предыдущего. Тогда начальное значение поневоле придётся установить правильно, и вопрос решится сам собой

Последний раз редактировалось Black Fregat; 05.11.2017 в 03:11. Причина: Добавлено
Black Fregat вне форума Ответить с цитированием
Старый 18.11.2017, 16:52   #3
Jura_Franasyuk
 
Регистрация: 25.10.2017
Сообщений: 8
По умолчанию

Так верно? Кто может проверить?

Код:
#include <iostream>

using namespace std;

int main()
{
	const double eps = 0.0005;
	double an = -1. / 2., n = 1, sum = 0;

	while (fabs(an) >= eps)
	{
		sum += an;
		an /= (-(2.*n + 1.)*(2.*n + 2.));
		n++;
	}
	cout << sum << endl;

	system("pause");
	return 0;
}
Jura_Franasyuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" Sandakan01 Помощь студентам 1 24.02.2016 03:20