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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
#1

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

25.09.2011, 22:06. Просмотров 376. Ответов 7
Метки нет (Все метки)

Доброго времени суток уважаемые форумчане. Помогите, не могу найти причину неправильной работы програмки:
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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в програмке (C++):

fputc не работает, укажите где в програмке ошибка - C++
В С создается файл и выполняется над ним работа. Создается файл, вводится в него текст, где слова разделены ' ' (пробелом), линии ':' (...

Коменты к програмке - C++ Builder
Мне надо разобраться в програмке,кто то может коменты к ней написать? #include&lt;vcl&gt; #include&quot;Unit1.h&quot; #pragma resource&quot;*.dfm&quot; ...

[Python] Кракозябры в програмке - Python
Буквально сегодня начал учить этот язык. После просмотра некоего курса появилась идея создать программу которая решает квадратные...

Загвоздка в програмке связанная с конструкцией if else - JavaScript
Написал учебную программу, которая считает сумму простых чисел от 0 до n. Т.е. пользователь вводит какое-нибудь число, например 100,...

Как использоать файлы лежащие в програмке - C#
Такой вопрс, как заложить например картинку в мою програмку, а потом чтоб програмка выложила этот файлик в наружу?

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services - C# ASP.NET
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: &lt;пропуск&gt; ......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4226 / 2200 / 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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
25.09.2011, 22:12 #3
Цитата Сообщение от VanDro Посмотреть сообщение
fact=fact*i;
первое, что заметил - fact при первом же проходе обнулится, и так нулём и останется...
0
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, но! Факториал не увел., походу цикл прекращается рано... Это к моему коду...
0
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 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;
}
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2011, 22:33 #6
Цитата Сообщение от VanDro Посмотреть сообщение
Спс! Кст. наверное, епс не константа- мы ее вводим, а в while не два условия?, да и суме вы присвоили 1... Вы не подумайте, я не наежаю, я в этом деле (С++) не очень, просто уточняю... сорри за кривое условие. -2 в степени і, разделить на і факториал.
eps как пример, можете вводить ее с клавиатуры, только ее переменной объявить. В while одно условие. Так как первое слагаемое суммы 1, вот и присвоил.
0
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
25.09.2011, 23:27  [ТС] #7
не пашет...
0
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
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$
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2011, 00:21
Привет! Вот еще темы с ответами:

1C 8.x Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи! - 1С
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error). - Turbo Pascal
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Interbase Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка - Delphi БД
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех полей таблицы организаций при выборе имени в Combobox. При...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера' - C# ASP.NET
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' Эта конструкция работала на IIS 4,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.09.2011, 00:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru