Ошибка деления на ноль - 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);  // в числителе набирается степень, в знаменателе факториал
}

Объяснение кода листинга программы

  1. Объявляются три переменные: double sum = 0; int i = 0; double t = 1;
  2. Переменная sum инициализируется значением 0 и используется для накопления суммы, переменная i инициализируется значением 0 и используется для контроля цикла, переменная t инициализируется значением 1 и будет использоваться как текущее слагаемое.
  3. Выполняется цикл while, который будет выполняться до тех пор, пока абсолютное значение переменной t больше заданной точности e.
  4. Внутри цикла к переменной sum прибавляется значение переменной t.
  5. Значение переменной t обновляется путем умножения на -2.0 и деления на факториал значения переменной i (в числителе набирается степень, в знаменателе факториал).  // в числителе набирается степень, в знаменателе факториал
  6. Значение переменной i увеличивается на 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы