найти сумму бесконечной серии.Почему он выдает нулевую сумму?

#c

#c

Вопрос:

Вам нужно найти суммы бесконечного ряда с заданной точностью.(картинка с задачей приведена как ссылка) программа постоянно считает нулевую сумму. Я не понимаю, в чем моя ошибка

 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
    int i;
    int n =1;
    double E,x,q;
    double sum = 0;

    scanf ("%f",amp;E) ;
    scanf ("%f",amp;x) ;

    q=pow(x,3)/6;

    while(fabs(q)>=E){

        if (n/2==0) {
            sum=sum q;
        }
        else {
            sum=sum-q;
        }
        q=(q*pow(x,2))/(n 3);
        n=n 1;
    }
    printf("%f",sum);
    return 0;
}
  

Комментарии:

1. Правильно ли ваше утверждение if? Разве вы не имеете в виду n%2 == 0.

2. Может быть, мне нужно проверить, является ли n четным или нет. Программа начала выдавать хотя бы какой-то ненулевой результат после того, как я изменил f на lf. Но я до сих пор не знаю, правильно ли я выполнил эту программу. #включить <stdio.h> #включить <stdlib.h> #включить <math.h> int main() { int i; int n =1; double E,x,q; double sum = 0; printf(«введите E = «); scanf («%lf»,amp;E) ; printf(«введите x = «); scanf («%lf»,amp;x) ; q=pow(x,3)/3; в то время как(fabs(q)>=E){ если (n%2 ==0) {сумма =sum q;} else { sum=sum-q;} q=(q* pow(x, 2)*(2 * n 1))/(2 * n 8); n = n 1; } printf(«%d %lf», n-1, сумма); возвращает 0; }

3. «Может быть, мне нужно проверить, является ли n четным или нет». n%2 == 0 делает именно это. Возможно, вы можете обновить свой вопрос и оставить заметку об улучшениях. Или, если у вас возникла новая проблема, напишите новую.

Ответ №1:

Он никогда не войдет в этот оператор if. Вы позволяете n = 1, и оно всегда будет 1, и вы делаете n = n 1 в else .

Комментарии:

1. Код введет первый if напрямую. Путем вычисления с целыми числами 1/2 = 0. И он увеличивает значение int после else . После первой итерации код никогда не будет вводить if .

2. Он изменил код. Теперь проблема в другом, что я вижу…

3. ах, ладно, извините.