Вычисление бесконечной суммы ( ошибка в коде ) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вычислить бесконечную сумму с точностью е = 0,001. Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем е.
#include <stdio.h>
#include <math.h>
 
#define e 0.001
 
float abs(float x)
{
if (x<0)
return x*(-1);
else 
return x;
}
 
float fact(float x)
{
if (x == 0)
return 1;
else if(x == 1)
return 1;
else
return x*fact(x-1);
}
 
int main()
{
float n=0,s=0;
float sum=0;
float x;
 
printf("Vvedite x: ");
scanf ("%f",&x); 
while (abs(sum)<= e)
{
 
s=powf(-1.0,n)*powf(x,2*n)/fact(2*n);
sum+=s;
n++;
 
getchar();
return 0;
}
Изначально писал под линуксом. Поэтому и расписывал функцию abs Помогите пожалуйста!

Решение задачи: «Вычисление бесконечной суммы ( ошибка в коде )»

textual
Листинг программы
#include <math.h>
#include <stdio.h>
 
#define e 0.001
 
double func(double x, double eps) {
    double aCurr = 1.0;
    double sum = 0.0;
    unsigned n = 1;
    do {
        sum += aCurr;
        aCurr *= (-1.0)*x*x/( (2*n-1) * (2*n) );
        ++n;
    } while (abs(aCurr) < eps);
    return sum + aCurr;
}
 
int main() {
    double sum=0.0;
    double x;
 
    printf("Vvedite x: ");
    scanf ("%lf",&x);
 
    sum = func(x, e);
 
    printf("Sum: &lf", sum);
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек: <math.h> и <stdio.h>.
  2. Определение константы e (маленькое число, определяющее погрешность вычислений).
  3. Определение функции func, которая принимает два аргумента: x и eps (маленькое число, определяющее погрешность вычислений). Внутри функции объявлены следующие переменные: aCurr (текущий член ряда), sum (накопитель суммы), n (номер текущего члена ряда).
  4. Используется цикл do-while, который выполняется до тех пор, пока абсолютное значение текущего члена ряда меньше заданной погрешности.
  5. Внутри цикла происходит добавление текущего члена ряда к накопителю суммы и обновление значения текущего члена ряда.
  6. После выполнения цикла возвращается накопитель суммы, дополненный последним членом ряда.
  7. В функции main объявлены две переменные: sum (накопитель суммы) и x (значение, которое необходимо вычислить).
  8. Выводится сообщение с просьбой ввести значение x.
  9. Значение x считывается с помощью функции scanf.
  10. Вызывается функция func с введенным значением x и заданной погрешностью e.
  11. Результат вычисления функции func сохраняется в переменной sum.
  12. Выводится сообщение с результатом вычисления суммы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5