Как правильно использовать do/while в нахождении суммы Си?
n=1,2,3,4,5
У меня есть задача - написать код данной суммы с использованием цикла do/while,но выводит неправильный результат.В чем может быть ошибка?
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int i=1,j,n,K,T;
float y = 0;
double S,P;
K=1;S=0;
do{
P=1;
j=1;
do{
P=P*(j+cos(j));
j++;
}while(j<n);
S=S+((2*n*(sin(n+1)))/P);
printf(" Ответ %f\n",S);
y+=S;
n++;
P = 0;
}while(n< 6);
printf("Y %f",S);
return 0;
}
Неправильный вывод
Ответ 1.180674
Ответ 1.547148
Ответ -0.314138
Ответ -1.878566
Ответ -2.048845
Y -2.048845
Правильный вывод
Ответ=1.180674
Ответ=1.412055
Ответ=0.486046
Ответ=0.018544
Ответ=-0.013684
Y 3.083635
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
мне кажется, тут несколько ошибок
вы используете
n, которое не инициализировано, хотя уже для этого определили переменнуюi, которую инициализировалипри вычислении произведение вычисляется до i включительно, а у вас не включительно:
вместо
do{
P=P*(j+cos(j));
j++;
}while(j<n);
надо
do{
P=P*(j+cos(j));
j++;
}while(j<=i);
- вы выполняете двойное суммирование
вместо
S=S+((2*n*(sin(n+1)))/P);
y+=S;
надо
S=((2*i*(sin(i+1)))/P);
y+=S;
