Найти сумму элементов последовательности с точностью 0,001 - C (СИ)
Формулировка задачи:
Здравствуйте,подскажите начинающему в Си . Не могу найти ошибку...Задание прикрепил.
#include <math.h>
#include <stdio.h>
#include <conio.h>
main(){
int c,z,m,n;
float a,s,b;
s=0;z=-1;b=1;m=1,n=1,a=1;
while(fabs(a)>0.001){
a=z*b/c;
z=-z;
b=b*2;
c=(2*n-1)*m*3;
s+=a;
}
printf("Answer:\n S=%1.3f",s);
getch();
}Решение задачи: «Найти сумму элементов последовательности с точностью 0,001»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define eps 0.001
float func(float x);
int main(void)
{
float x;
printf("\nVvedite x ");
scanf("%f",&x);
printf("\nsumma elementov = %f\n",func(x));
}
float func(float x)
{
float sum,i;
for(i=0,sum=0;sum<eps;i++)
{
sum=sum+(((pow(-1,i))*(pow(x,(2*i-1))))/((2*i)+1));
}
return sum;
}
Объяснение кода листинга программы
В этом коде:
- В функции
mainпрограмма запрашивает у пользователя значение переменнойxи передает его в функциюfunc. - Функция
funcначинает с цикла, который суммирует элементы последовательности, используя формулу ряда Тейлора для функцииsin(x). - Цикл продолжается, пока сумма элементов не станет меньше заданной точности
eps. - Значение суммы элементов возвращается в функцию
main, где оно выводится на экран.