#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. ах, ладно, извините.