Вычислить сумму с точностью до e - C (СИ)
Формулировка задачи:
Объясните как вообще делать с этими факториалами???
Решение задачи: «Вычислить сумму с точностью до e»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { system("chcp 1251>NUL"); double x, e, Sk, fact, Sk1, Sk2; int k = 0; printf("x="); scanf("%lf", &x); printf("e="); scanf("%lf", &e); k = 0; fact = 1; Sk1 = 0; Sk2 = 0; puts("-------------------------------------------------------------------------"); puts("|\tСумма S(k)\t|\tСумма S(k-1)\t|\tS(k)-S(k-1)\t|"); puts("-------------------------------------------------------------------------"); do { if (k > 0) fact = fact*k; else fact = 1.0; Sk1 = Sk2; Sk = (pow(-1.0, k)*pow(x, 2.0 * k + 1.0)) / (fact*(2.0 * k + 1.0)); Sk2 = Sk1 + Sk; printf("|\t%lf\t|\t%lf\t|\t%lf\t|\n", Sk2, Sk1, fabs(Sk2-Sk1)); k++; } while (fabs(Sk2 - Sk1) > e); puts("-------------------------------------------------------------------------\n"); printf(""S(k)-S(k-1)" %lf <= %lf "e"\n",fabs(Sk2-Sk1), e); return 0; }
Объяснение кода листинга программы
В этом коде выполняется вычисление суммы S(k) с точностью до e. Список действий:
- Ввод значений переменных x и e с помощью функции scanf.
- Инициализация переменных fact, Sk1, Sk2, k = 0.
- Вывод таблицы с названиями и значениями переменных.
- Запуск цикла do-while для вычисления суммы S(k).
- Внутри цикла:
- Вычисление значения fact.
- Вычисление значения Sk1.
- Вычисление значения Sk2 как суммы Sk1 и Sk.
- Вывод значений Sk2, Sk1 и разности Sk2-Sk1.
- Увеличение k на 1.
- Цикл выполняется до тех пор, пока разность Sk2-Sk1 больше e.
- Вывод таблицы с названиями и значениями переменных.
- Вывод сообщения с числом k, значением разности Sk2-Sk1 и числом e.
- Возврат 0, означающий успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д