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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 22:50   #1
Workout111
 
Регистрация: 17.11.2012
Сообщений: 4
По умолчанию Дано натуральное число n. Нужно найти n!! для данных значений.

Дано натуральное число n. n!! озночает 1*3*5...n для нечетного n и 2*4*6...n для четного n. Составить программу вычисления для n!!. Получить результаты при 1)n=10 2)n=13 3)n=22.
Workout111 вне форума Ответить с цитированием
Старый 18.11.2012, 00:46   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Вариант 1: проверить число на чётность и перемножать числа либо от 1, либо от 2 до n с шагом 2.
Вариант 2: перемножать числа от n, и пока очередной множитель не станет меньше 2.
Abstraction вне форума Ответить с цитированием
Старый 18.11.2012, 01:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вариант 2: перемножать числа от n, и пока очередной множитель не станет меньше 2.
позволю уточнить то, что Вы подразумевали, но кому-то это может быть не так очевидно.

Вариант 2: перемножать числа от n, уменьшая n с шагом 2, пока очередной множитель не станет меньше 2.

программка будет выглядеть так:
Код:
var n : integer;
   rez : LongInt;
begin
  WriteLn('Введите n');
  Readln(n);
  if n<0 then WriteLn('Ошибка, N должно быть положительным!')
  else begin
     rez := 1;
     while n>=2 do begin
        rez := rez * n;
        n := n - 2;
      end;
      WriteLn(' n!! = ', rez);
  end;
  Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2012, 02:08   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

При n = 22
n!! = 81749606400,
посему у меня вопрос: а достаточно ли лонг LongInt?
Sasha_Smirnov вне форума Ответить с цитированием
Старый 18.11.2012, 02:38   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sasha_Smirnov, вы правы, совершенно недостоточен!
нужно или брать тип Int64, или, если это по каким-то соображения не подходит, реализовывать длинную арифметику.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2012, 02:48   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Я вот беру VBA и не парюсь. (Ну это так, чтоб знали, что есть что-то ещё!)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 18.11.2012, 10:37   #7
Workout111
 
Регистрация: 17.11.2012
Сообщений: 4
По умолчанию

не могли бы написать программу варианта 1, второй вариант не работает, числа совсем другие выходят...
Workout111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано натуральное число Sylar Помощь студентам 2 14.06.2012 09:30
Дано натуральное число n и действительные числа а1, а2, а3, ..., an (а1≠0) нужно определить какой член находится ранее. Hom94ok Паскаль, Turbo Pascal, PascalABC.NET 0 12.03.2012 17:52
Дано натуральное число n. Найти среднее арифметическое чисел до первого 0 Хр@мовник Паскаль, Turbo Pascal, PascalABC.NET 3 15.01.2012 14:05
Дано натуральное число п. Написать программу для определения первой цифры числа п. AlenaVasilenko Паскаль, Turbo Pascal, PascalABC.NET 5 17.06.2011 18:23
дано натуральное число n. solisoul Паскаль, Turbo Pascal, PascalABC.NET 1 19.06.2010 22:42