Используя функцию, написать программу вычисления суммы ряда - C (СИ)
Формулировка задачи:
Используя функцию, написать программу вычисления суммы ряда s=s(1)+…+s(n), где s(n)=(-1)^n x^(2n-1)/(2n+1) с точностью до eps=0.001. В качестве параметров выбрать x
#include <stdio.h> #include <stdio.h>
#include <math.h>
#include <conio.h>
double ABS(double s)
{return s<0 ? s*-1:s;
}
int main()
{
double x=0.0f, s=0.002f;
scanf("%f",&x);
for (int n=1; ABS(s)<0.003; n++)
s+=pow(-1.0, (double)n)*pow(x,(2.0*(double)n-1.0)/(2.0*(double)n+1.0));
printf("s=",s);
getch ();
return 0;
}
подправьте что не так, дайте совет,
Решение задачи: «Используя функцию, написать программу вычисления суммы ряда»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
double fabs(double sum)
{return sum<0 ? -sum:sum;}
int main()
{
clrscr();
int sign, n;
double eps, sum, elem, x;
eps=0.001;
x=0.5;
sign=1;
for(n=1; n++;)
{
elem=sign*pow(x,(2*n-1))/(2*n+1);
sum+=elem;
if(fabs(elem)<eps){break;}
sign=-sign;
}
printf("sum=%.10f\n",sum);
getch();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами с плавающей точкой и для работы с консолью.
- Реализация функции fabs для получения абсолютного значения числа.
- Ввод данных: значение переменной eps (необходимо для контроля точности вычислений), значение переменной x (для данного ряда это 0.5), начальное значение переменной sign (1), переменная n инициализируется значением 1.
- Выполнение цикла по нечётным числам от 1 до n.
- Вычисление значения элемента ряда elem на каждой итерации цикла.
- Добавление значения элемента к сумме ряда.
- Проверка на точность вычислений: если абсолютное значение текущего элемента меньше eps, то ряд считается сходящимся и цикл прерывается.
- Значение переменной sign меняется на противоположное.
- После завершения цикла выводится итоговое значение суммы ряда.
- Программа ожидает нажатия клавиши для выхода.
- Возврат 0, означающий успешный завершение программы.