Другие языки программирования и технологии

Бесконечная сумма на языке C

Никак не могу разобраться с бесконечной суммой.У меня есть задание:.Нужен код программы, чтобы разбираться по какому-то материалу, а не пустому листу.
Дерзайте. Гарантий того, что программа верна, не даю.

#include <math.h>
#include <stdio.h>

#define e 1e-5 // точность

int main() {
    double x;    // заданный Х
    int k = 0;    // K
    double f = 1; // факториал
    double si;    // очередной член последовательности
    double s = 0; // сумма

    printf("x? ");    // запрашиваем
    scanf("%lf", &x);    // и читаем со стандартного ввода X
   
    do {    // цикл подсчета суммы
        ++k;                // добавляем единицу к K
        f *= k;            // считаем факториал
        si = (x - k) / f; // считаем очередной член последовательности
        s += si;            // считаем общую сумму
        printf("%f %f\n", si, s);
    } while (x - k == 0 || fabs(si) > e); // пока очередной член последовательности
                                        // больше заданной точности, (x - k) -- чтобы
                                        // исключить нулевые члены суммы

    printf("sum: %f\n", s); // вывод результата
   
    return 0;
}
Леонид Тимашев
Леонид Тимашев
88 574
Лучший ответ
Да просто создай цикл WHILE с проверкой.
Если при очередной итерации цикла значение (x - k) / k! стало меньше 0.00001, то дальше считать не имеет смысла и выходишь из цикла. Как-то так:

real s = 0; // сумма
int k = 1;
int kk = 1;
real a;
do
{
a = (x - k) / kk;
k++;
kk *= k;
s += a;
}
while (a > 0.00001)