Ошибка деления на ноль - C (СИ)
Формулировка задачи:
Ув. программисты! Помогите решить проблему:
программа работает, но когда ввожу значение e=0.001 или 0.00005 и т.д. и т.п программа выдает ошибку деления на ноль. Почему?
#include<stdio.h> #include<conio.h> #include<math.h> void main() { int i,f,g; float e,s1,s2; //clrscr(); printf("Vvedite e: "); scanf("%f",&e); if(e>0) { s1=s2=0; for(i=0;;i++) { f=1; for(g=1;g<=i;g++)f*=g; s1+=((double)pow(-2.0,i))/f; if(i!=0) { if(fabs(s2-s1)<e) { printf("Summa= %f",s1); break; } else s2=s1; } } } else printf("Error: e<=0!"); getch(); }
Решение задачи: «Ошибка деления на ноль»
textual
Листинг программы
double sum = 0; int i = 0; double t = 1; // текущее слагаемое while( fabs(t) > e ) { sum += t; t *= -2.0 / double(++i); // в числителе набирается степень, в знаменателе факториал }
Объяснение кода листинга программы
- Объявляются три переменные: double sum = 0; int i = 0; double t = 1;
- Переменная sum инициализируется значением 0 и используется для накопления суммы, переменная i инициализируется значением 0 и используется для контроля цикла, переменная t инициализируется значением 1 и будет использоваться как текущее слагаемое.
- Выполняется цикл while, который будет выполняться до тех пор, пока абсолютное значение переменной t больше заданной точности e.
- Внутри цикла к переменной sum прибавляется значение переменной t.
- Значение переменной t обновляется путем умножения на -2.0 и деления на факториал значения переменной i (в числителе набирается степень, в знаменателе факториал). // в числителе набирается степень, в знаменателе факториал
- Значение переменной i увеличивается на 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д