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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 20:43   #1
locdoc
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию факториал

найти значение выражения 2*5!+3*8! / 6!+4! ,определяет функцию расчета факториала натурального числа!!!
locdoc вне форума
Старый 07.11.2010, 20:57   #2
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

Код:
int faktorial(int x)
{
    int y = 1;
    for (int i = 1; i<=x; i++) y = y * i;
    return y;
}
casekey вне форума
Старый 07.11.2010, 21:10   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Заполнение массива факториалов:
Код:
var
  Fact: array[0..12] of Integer;
  I, N: Integer;

...

  N := 1;
  Fact[0] := N;
  for I := 1 to 12 do
  begin
    N := N * I;
    Fact[I] := N;
  end; {for}
Далее просто подставляем формулу: 2*Fact[5]+3*Fact[8] / Fact[6]+Fact[4]
Arigato вне форума
Старый 08.11.2010, 07:28   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
Fact=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N=1
Fact[0]=1
for i in 1..12
   N=N*i
   Fact[i]=N
end
Код Arigato на Руби .
Вот факториал:
Код:
def fact(n)
    if n == 0
     1
    else
      n * fact(n-1)
    end
end
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.11.2010 в 07:31.
Utkin вне форума
Старый 08.11.2010, 09:21   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Код:
Fact=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N=1
Fact[0]=1
for i in 1..12
   N=N*i
   Fact[i]=N
end
Код Arigato на Руби .
Тогда уж так:
Код:
Fact=[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N=1
for i in 1..12
   N=N*i
   Fact[i]=N
end
Интересно, а если в массиве должно быть не 12, а 1000 элементов, что тогда?
Arigato вне форума
Старый 08.11.2010, 09:23   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Интересно, а если в массиве должно быть не 12, а 1000 элементов, что тогда?
Там динамические массивы, инициализировать не обязательно . Можно добавлять элементы в конец массива...

ЗЫ. Прочитал мысли ТС, ему надо на Паскале
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума
Старый 08.11.2010, 09:34   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от locdoc Посмотреть сообщение
определяет функцию расчета факториала натурального числа!!!
Так, вот решение данной части задачи, определяем функцию для расчета факториала:
Код:
function Fucktorial (N: Integer): Integer;
begin
  Fucktorial := 1;
  if N = 1  then Fucktorial := 1;
  if N = 2  then Fucktorial := 2;
  if N = 3  then Fucktorial := 6;
  if N = 4  then Fucktorial := 24;
  if N = 5  then Fucktorial := 120;
  if N = 6  then Fucktorial := 720;
  if N = 7  then Fucktorial := 5040;
  if N = 8  then Fucktorial := 40320;
  if N = 9  then Fucktorial := 362880;
  if N = 10 then Fucktorial := 3628800;
  if N = 11 then Fucktorial := 39916800;
  if N = 12 then Fucktorial := 479001600;
end;
Почему только до 12? Да потому, что значение большего факториала не влезет в тип Integer. А нам для задачи вообще достаточно максимум 8! уметь находить. Так что данная функция идеально подходит для решения Вашей задачи.
Arigato вне форума
Старый 08.11.2010, 09:41   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну можно еще через case, тоже самое, но мне кажется, красивше будет...
Кстати, в Руби, можно и больше 12, там динамическая типизация, автоматическая конвертация в объект класса BigNum, а там длинная арифметика над целыми числами неограниченной длины.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.11.2010 в 09:43.
Utkin вне форума
Старый 08.11.2010, 09:54   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Ну можно еще через case, тоже самое, но мне кажется, красивше будет...
Через case опасно, т.к. препод может спросить: "А что это такое?", и на этом студент завалится. А тут все ясно и прозрачно, что даже у препода и вопросов не возникнет. А если и возникнет, то стоит обратить его внимание на название функции, думаю, тогда все вопросы сразу отпадут
Arigato вне форума
Старый 14.11.2010, 10:21   #10
locdoc
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Так, вот решение данной части задачи, определяем функцию для расчета факториала:
Код:
function Fucktorial (N: Integer): Integer;
begin
  Fucktorial := 1;
  if N = 1  then Fucktorial := 1;
  if N = 2  then Fucktorial := 2;
  if N = 3  then Fucktorial := 6;
  if N = 4  then Fucktorial := 24;
  if N = 5  then Fucktorial := 120;
  if N = 6  then Fucktorial := 720;
  if N = 7  then Fucktorial := 5040;
  if N = 8  then Fucktorial := 40320;
  if N = 9  then Fucktorial := 362880;
  if N = 10 then Fucktorial := 3628800;
  if N = 11 then Fucktorial := 39916800;
  if N = 12 then Fucktorial := 479001600;
end;
Почему только до 12? Да потому, что значение большего факториала не влезет в тип Integer. А нам для задачи вообще достаточно максимум 8! уметь находить. Так что данная функция идеально подходит для решения Вашей задачи.
а блок схему можете на рисовать?
locdoc вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ (факториал) slim>>> Помощь студентам 2 13.01.2010 20:34
Факториал. dimka660i Помощь студентам 11 10.10.2009 23:28
факториал в си++ Sjava Помощь студентам 1 21.12.2008 12:17