Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2013, 22:05   #1
_Лето_
Пользователь
 
Регистрация: 04.11.2013
Сообщений: 23
По умолчанию Почему выводит ноль?

Пожалуйста, помогите с программой. Не могу понять, почему выводит ноль.
Код:
#include<iostream>
using namespace std;
double fac(int number);
int main()
{
  int number=10;
  double result=0;
  for (int i=1;i<=number;++i)
  {
    result+=fac(i);
  }
  std::cout<<result;

return 0;
}
double fac(int number)
{
double fac=1;
for (int i=1;i<=number;++i)
   fac*=((i-1)*(i-1))/(2*i);
 return fac;

}

Последний раз редактировалось Stilet; 13.11.2013 в 23:32.
_Лето_ вне форума Ответить с цитированием
Старый 13.11.2013, 22:07   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
fac*=((i-1)*(i-1))/(2*i);
Цикл Вы крутите с 1 и получаете (i-1) = 0.. а дальше всё ясно..
Poma][a вне форума Ответить с цитированием
Старый 13.11.2013, 22:27   #3
_Лето_
Пользователь
 
Регистрация: 04.11.2013
Сообщений: 23
По умолчанию

Все равно не выходит. Выводит теперь либо единицу, либо двойку. Сама задача (i=1 до n)Е(m-1)!/2n!
Пожалуйста, помогите!
_Лето_ вне форума Ответить с цитированием
Старый 13.11.2013, 23:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Сама задача (i=1 до n)Е(m-1)!/2n!
Код:
 int m=2,n=4,fac=1,mfac=1;
 double s=0;
 for(int i=1;i<m;i++) mfac*=i;
 for(int i=1;i<2*n;i++) fac*=i;
 for(int i=1;i<=n;i++)    s+=mfac/fac;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2013, 09:11   #5
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

А ноль у вас получается потому что надо объяснить компилятору что вы получаете все таки double, а так как в вашем вырождении fac*=((i-1)*(i-1))/(2*i); все переменные int, то и оно будет округлять до int полученный результат, то есть до нуля. измените вырождение на fac*=((i-1)*(i-1)) * 1.0 /(2*i) должно получиться.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться почему выводит не то.. (СИ) GroMkiY Общие вопросы C/C++ 10 16.10.2013 23:07
Почему выводит лишь процессы пользователя? Ice_Han Помощь студентам 0 30.04.2012 10:32
Запрос выводит 7 одинаковых записей. Почему? Lokos БД в Delphi 10 14.04.2011 09:07
Почему выводит строку 2 раза?!?!?! Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.11.2010 11:06
Delphi, ошибка деления на ноль, хотя знаменатель не ноль Эренка Помощь студентам 7 22.04.2010 15:56