Форум программистов, компьютерный форум CyberForum.ru

Ошибка в програмке - C++

Восстановить пароль Регистрация
 
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
25.09.2011, 22:06     Ошибка в програмке #1
Доброго времени суток уважаемые форумчане. Помогите, не могу найти причину неправильной работы програмки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{float sum=0,e,t;
int i=0,fact=1;
cin>>e;
do {
fact=fact*i;
t=(pow(-2,i))/fact;
i++;
sum=sum+t;}
while (fabs(t)>e && fabs(sum)>e);  
cout<<sum<<"   "<<fact;
getch();
return 0;}
Вот условие задачи:
Вычислить бесконечную сумму с заданной точ¬ностью е (е > 0). Считать, что требуемая точность достиг¬нута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем е,— это и все последующие слагаемые можно уже не учитывать. Вычислить:
"бесконечная сума" ((-2)в степени i) / i!
i = 0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 22:06     Ошибка в програмке
Посмотрите здесь:

C++ fputc не работает, укажите где в програмке ошибка
Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка C++
C++ Ошибка с графикой в приложении Windows form (ошибка не в коде!)
Выскакивает ошибка Stack around the voriable 'text' was corrupted. Подскажите пожалуйста в чём ошибка C++
C++ Укажите где ошибка (ошибка во время выполнения программы)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2011, 22:10     Ошибка в програмке #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<math.h>
 
const double eps = 0.001;
 
int main()
{
   double sum, p;
   int i = 0;
   p = sum = 1;
   while (fabs(p) >= eps)
   {
      i++;
      p *= -2.0/i;
      sum += p;
   }
   std::cout << sum;
   std::cin.get();
   return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.09.2011, 22:12     Ошибка в програмке #3
Цитата Сообщение от VanDro Посмотреть сообщение
fact=fact*i;
первое, что заметил - fact при первом же проходе обнулится, и так нулём и останется...
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
25.09.2011, 22:25  [ТС]     Ошибка в програмке #4
Цитата Сообщение от Thinker Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<math.h>
 
const double eps = 0.001;
 
int main()
{
   double sum, p;
   int i = 0;
   p = sum = 1;
   while (fabs(p) >= eps)
   {
      i++;
      p *= -2.0/i;
      sum += p;
   }
   std::cout << sum;
   std::cin.get();
   return 0;
}
Спс! Кст. наверное, епс не константа- мы ее вводим, а в while не два условия?, да и суме вы присвоили 1... Вы не подумайте, я не наежаю, я в этом деле (С++) не очень, просто уточняю... сорри за кривое условие. -2 в степени і, разделить на і факториал.

Добавлено через 4 минуты
Блин, это я выложил код старее, і=1, но! Факториал не увел., походу цикл прекращается рано... Это к моему коду...
RaiaNKnight
 Аватар для RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 458
Записей в блоге: 1
25.09.2011, 22:28     Ошибка в програмке #5
Можно вот так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{
  float sum=0,e,t;
  int i=0,fact=1,p=1;
  cin>>e;
  do
  {
    t=p/fact;
    i++;
    p=-(p<<1);
    fact=fact*i;
    sum=sum+t;
  }
  while(fabs(t)>e && fabs(sum)>e);
  cout<<sum<<"   "<<fact;
  getch();
  return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2011, 22:33     Ошибка в програмке #6
Цитата Сообщение от VanDro Посмотреть сообщение
Спс! Кст. наверное, епс не константа- мы ее вводим, а в while не два условия?, да и суме вы присвоили 1... Вы не подумайте, я не наежаю, я в этом деле (С++) не очень, просто уточняю... сорри за кривое условие. -2 в степени і, разделить на і факториал.
eps как пример, можете вводить ее с клавиатуры, только ее переменной объявить. В while одно условие. Так как первое слагаемое суммы 1, вот и присвоил.
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
25.09.2011, 23:27  [ТС]     Ошибка в програмке #7
не пашет...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2011, 00:21     Ошибка в програмке
Еще ссылки по теме:

Синтаксическая ошибка: Ошибка 1 error C2059 C++
Ошибка 2 error LNK2019, не пойму в чем ошибка C++
Ошибка в коде (Ошибка сегментирования (core dumped) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.09.2011, 00:21     Ошибка в програмке #8
Цитата Сообщение от VanDro Посмотреть сообщение
не пашет...
А должна бы? Программа всё-таки, не лошадь...
Код
andrew@debnout:~/cpp/numbers$ g++ -o thinker_sum thinker_sum.c 
andrew@debnout:~/cpp/numbers$ ./thinker_sum 
0.135379
andrew@debnout:~/cpp/numbers$ cat thinker_sum.c 
#include<iostream>
#include<math.h>
 
const double eps = 0.001;
 
int main()
{
   double sum, p;
   int i = 0;
   p = sum = 1;
   while (fabs(p) >= eps)
   {
      i++;
      p *= -2.0/i;
      sum += p;
   }
   std::cout << sum;
   std::cin.get();
   return 0;
}

andrew@debnout:~/cpp/numbers$
Yandex
Объявления
26.09.2011, 00:21     Ошибка в програмке
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru