Вычислить сумму с точностью до 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, означающий успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д