Меню Рубрики

Как в паскале пишется факториал

Факториал в «Паскале»: как вычислить. Примеры программ

Обучение программированию идёт по пути от простого к сложному. Освоив типы данных и операторы языка, переходят к циклическим конструкциям. Задач на циклы существует бесчисленное количество: начиная от вывода цифр в столбик до подсчёта сумм по сложным формулам. Тем не менее у начинающих программистов остаётся вопрос: «Как вычислить факториал в «Паскале»?»

Реализовать задачу можно как минимум тремя способами. Отличаются они используемыми операторами.

Математические сведения

Перед тем как перейти к построению алгоритмов и написанию программ, следует изучить теорию. В математике факториалом называют произведение целого числа, для которого вычисляется выражение, на целые положительные числа меньше его.

Понять определение поможет пример. Пусть требуется выполнить нахождение факториала для числа 3. Решение: 3! = 3 * 2 * 1 = 6.

Обозначается действие восклицательным знаком, который ставится после числа. Важное замечание: факториал определён только для целых положительных чисел. Вместе с тем, введено понятия для нуля: 0! = 1.

Считать выражение для больших значений вручную – занятие долгое. Чтобы убыстрить процесс вычислений, используют компьютерные программы. Далее рассмотрены способы, как найти факториал в «Паскале».

Первый способ

Код ниже показывает вариант программы.

В примере используют составную конструкцию с условием, которое записывается перед телом цикла. Синтаксис записи:

Выполняется код следующим образом: программа проверяет истинность выражения , в случае положительной проверки переходит на .

Возвращаясь к программе, нужно обратить внимание на следующие строки:

  • 2 – задаётся число n, для которого будет выполнен расчёт;
  • 6 – заголовок цикла;
  • 7 – начало цикла;
  • 8 – вычисление переменной fact, которая хранит значение факториала числа n;
  • 9 – увеличение переменной-счётчика на единицу;
  • 10 – конец цикла.

Второй способ

Следующий предлагает вычислить факториал в «Паскале» с помощью оператора repeat.

Конструкция цикла: repeat until <условие>;

Чтобы понять, как работает программа, рассмотрим её построчно:

  • 2 – константе n назначается число, для которого выполняется вычисление;
  • 7 – начало цикла;
  • 8, 9 – расчёт факториала и увеличения счётчика i;
  • 10 – конец тела цикла;
  • 11 – проверка условия, поскольку условие располагается после последовательности операторов, повтор действий будет выполнен как минимум один раз.

Третий способ

Последняя программа также дает возможность вычислить факториал в «Паскале» и является самой компактной по размеру. Причина – используемый оператор for, для которого увеличение счётчика i задаётся в параметрах цикла.

Работает код следующим образом (цифрами указаны строки листинга):

  • 2 – константе n присваивают значение числа, для которого вычисляется факториал;
  • 6 – задаются параметры цикла – начальное и конечное значения;
  • 7 – начало цикла;
  • 8 – вычисление переменной fact;
  • 9 – конец цикла.

Замечание

Даже для чисел из первой десятки факториал имеет значение больше, чем допускает тип данных integer. Поэтому программа в «Паскале» покажет сообщение об ошибке. Исправить её просто – нужно заменить тип данных для переменной-результата на longint или использовать типы для хранения вещественных значений.

Источник статьи: http://fb.ru/article/304034/faktorial-v-paskale-kak-vyichislit-primeryi-programm

Факториал числа

Написал программу, которая считает факториал числа.
Но считает она до максимального значения типа REAL. Как сделать, чтобы считался факториал для любого числа? (С массивами пока не знаком.)

Определить во сколько раз факториал числа n! больше факториала числа m!
Определить во сколько раз факториал числа n! больше факториала числа m!

Определить во сколько раз факториал числа n больше числа m
Определить во сколько раз факториал числа n больше числа m

Факториал числа
Скажи пожалуйста, существуют ли ещё способы нахождения n! в Pascal, кроме самого простого var.

Определить факториал числа
Определить факториал числа n!

Считает сумму числа сочетаний, из этого можно и про факториалы извлечь.
Программа авторская.

Добавлено через 1 минуту
ЯСеньПень, что означает «cnk» ?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти факториал числа
Пользователь вводит натуральное число. Найти факториал числа. Использовать процедуры или функции

Найти факториал числа N
Помогите пожалуйста, очень нужно, заранее благодарю! Операторы цикла 15. Найти факториал числа N.

Найти факториал числа N
Ввести N различных чисел. Найти N!.Помогите плиз

Факториал числа в процедурах
Пользователь вводит натуральное число. Требуется найти факториал введенного числа, при условии что.

Источник статьи: http://www.cyberforum.ru/pascalabc/thread239797.html

Написать функцию вычисления факториала

Написать рекурсивную функцию вычисления факториала
Нужно написать рекурсивную функцию вычисления n!. Обычную функции могу написать, а куда рекурсию.

Написать программу, которая вычисляет значение p = (для вычисления факториала использовать функцию)
Написать программу, которая вычисляет значение p =m!*(m-n)!/n! (для вычисления факториала.

Вычисление суммы, используя функцию вычисления факториала
Составить программу вычисления суммы (рис), используя функцию вычисления факториала натурального.

Вычислить величины. Использовать функцию вычисления факториала
Составить программу. В задаче предполагается, используя шестизначный учебный шифр (его.

простите меня на недогадливость, а в чём состоит существенная экономия?

Решение

очень хитро!
я бы лично вряд ли использовал подобный код в реале (не люблю в продакшн такие хитрозакрученные и слегка неочевидные вещи), но код вызывает восхищение! Просто супер!
Спасибо!

bormant, а эта строчка всё таки НЕ НУЖНА!
Закомментируйте и убедитесь в этом сами!

цикл for изменяет переменную m

Решение

Тут понимаете какая штука.

Для языка Паскаль недвусмысленно заявлено, что значение счетчика цикла for по окончании цикла не определено, если только цикл не завершился по Break. Это означает, что значение счетчика цикла может быть разным в зависимости как от реализации языка, так и от варианта оптимизации внутри конкретной реализации (например, равным последнему значению, следующему за последним значением, или вовсе начальному значению). Если какая-то реализация будет брать начальное значение счетчика из памяти в регистр, все обращения к счетчику транслировать в обращения к этому регистру, а возвращать значение из регистра в память только по Break, то, строго говоря, это не будет нарушением с точки зрения языка.

Поэтому закладываться на особенности той или иной реализации — самое последнее дело.
Это сродни самой дорогой ошибке программирования — ARIANE 5, с той лишь разницей, что там заложились не на языковые особенности, а на то, что начальные условия старта ARIANE 4, для которой изначально писался код, останутся неизменны.

Наоборот, код не использует ни одной нестандартной или недокументированной возможности. Он просто помнит одно последнее значение и использует его, если возможно. В конкретно этом примере экономия невелика, но представьте вместо Longint длинную арифметику, и оценки времени сразу заиграют новыми красками 🙂

Пример по сути является наводящим для организации «ленивых вычислений». Если последнее значение заменить таблицей, вычисляемой по мере необходимости, то достигается экономия на повторных вычислениях одних и тех же значений (без проверок допустимых диапазонов, только идея):

Или варианты с промежуточными значениями и довычисление от них необходимых.

Другое дело, что если бы в продакшн подобный участок был бы действительно критичным по времени, то вместо функции была бы таблица.

Источник статьи: http://www.cyberforum.ru/turbo-pascal/thread1795221.html

Двойной факториал

Задача: Дано натуральное число n. Получить n!! (!-факториал),равное произведению (1*3*. *n) для нечётного n и (2*4*. *n) для чётного n.

Требования:
Использовать оператор FOR.
Не использовать массивы и строки.
При вычислении факториалов обратить внимание на переполнение. Определить,при каких значениях параметров оно наступает. Постараться отодвинуть эту эту границу путём изменения типа параметров или сокращения дробей.

Двойной факториал
подскажите как написать функцию для вычисления х!!

Вычислить двойной факториал
привет всем. Суть задания такова найти для N значение (2N)!! нашел программу, но она работает для.

Вычислить двойной факториал
Написал программку под задание: Для числа n вывести произведение «n!!» с условием: если число.

Найти двойной факториал
Дано целое число N (> 0). Найти двойной факториал N: N!! = N•(N–2)•(N–4)•… (последний сомножитель.

у меня не нормально,на фор жалуется(

Добавлено через 3 минуты
вроде заработало,для чётных кажется правильно,но для неч ответ с минусом вылазит.

Задача: Дано натуральное число n. Получить n!! (!-факториал),равное произведению (1*3*. *n) для нечётного n и (2*4*. *n) для чётного n.

Требования:
Использовать оператор FOR.
Не использовать массивы и строки.
При вычислении факториалов обратить внимание на переполнение. Определить,при каких значениях параметров оно наступает. Постараться отодвинуть эту эту границу путём изменения типа параметров или сокращения дробей.

victor_g
прога работает,спасибо,но вроде нужно произведение факториалов,а вылазит просто факториал(

может нужно ввести в расчёты ещё n2 чётное? а потом перемножить чёт и нечет.

if (i mod 2)<>(n mod 2) then continue;

можно объяснение этой строки

if (i mod 2)<>(n mod 2) then continue;

можно объяснение этой строки

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычислить двойной факториал
Составьте, пожалуйста, программу для вычисления двойного факториала (2n+1)!! (например.

Вычислить двойной факториал, используя процедуру
Вычислить, используя процедуру у = (2n — 1)!! = 1* 3*5 * . * (2n — 1), n>0 Дублирование.

Двойной факториал
N!! = N*(N–2)*(N–4)*… (N > 0 — параметр целого типа; последний сомножитель в произведении равен 2.

Двойной факториал
Пусть n — натуральное число и пусть n!!означает 1*3*5*. *n для нечетного n и 2*4*. *n для.

Источник статьи: http://www.cyberforum.ru/pascal/thread64936.html

факториал процедура

Факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx
Хочу сделать код факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx и.

Факториал. Определить максимальное число, факториал которого хранится в переменной типа int
/*Доброго времени суток ! Задача такова: Пользователь вводит число с клавы. Вывести на экран.

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала.

Процедура ПередЗаписью и Процедура ПередЗаписьюНаСервере
В документе после нажатия на кнопку Провести и закрыть надо запросить информацию у пользователя .

например вводим 9 и ищем сумму S=1!+3!+5!+7!+9!

Добавлено через 4 минуты
ссылка не помогла(

извините, но это уже патология

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Факториал 2n
Чему равен факториал 2n? !2=2 !4=24 !6=. Или не прав? Добавлено через 6 минут Или вот.

факториал
Я только начал изучать С++ и вот столкнулся с проблемой: дано положительное число A>=10.Найти.

факториал в С++
Как найти факториал с помощью рекурсивной функции?

факториал (2k+1)!с++
помогите пожалуйста посчитать факториал (2k+1)! и если возможно с построчными комментариями .

Источник статьи: http://www.cyberforum.ru/turbo-pascal/thread121750.html


0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии