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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2018, 17:10   #1
Necker
Пользователь
 
Регистрация: 23.09.2018
Сообщений: 23
Вопрос подсчитать факториалы всех чисел в заданном пользователем диапазоне [Delphi, Pascal]

подсчитать факториалы всех чисел в заданном пользователем диапазоне.
Факториал числа имеет следующий вид:
n! = 1 * 2 * 3 * 4 * ... * n
Формат вывода расчетов:
Введите начало диапазона 3
Введите конец диапазона 6
3! = 1 * 2 * 3 = 6
4! = 1 * 2 * 3 * 4 = 24
5! = 1 * 2 * 3 * 4 * 5 = 120
6! = 1 * 2 * 3 * 4 * 5 * 6 = 720
//
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
k, s, i, m, n: integer;
begin
writeln ('Input first number');
readln(m);
writeln ('Input second number');
readln(k); // ввели число, факториал которого надо посчитать.

s:= 1; // это у нас переменная для результата.
for i:= 1 to k do
s:= s*i;
writeln('s =  ', s); // вывод результата.

n:=1;
  for i:= 1 to m do
   n:= n*i;
  writeln('n= ', n);
  readln;
end.
Но не могу понять, как сделать вывод по условию, может кто-нибудь подсказать как это делать, как задать диапазон и сделать вывод от начального каунта до конечного, буду признателен

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 23.09.2018 в 18:10.
Necker вне форума Ответить с цитированием
Старый 23.09.2018, 17:57   #2
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Если речь идёт о 100, то цифр в вашем процессоре не хватит, чтобы подсчитать это число. Я лично проверял. У меня ряд обрывался где-то в районе второго десятка. После этого процессор тупо выдавал 0.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 23.09.2018, 18:07   #3
Necker
Пользователь
 
Регистрация: 23.09.2018
Сообщений: 23
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Если речь идёт о 100, то цифр в вашем процессоре не хватит, чтобы подсчитать это число. Я лично проверял. У меня ряд обрывался где-то в районе второго десятка. После этого процессор тупо выдавал 0.
там надо задать первое число , потом второе, и чтоб программа вывели значение факториалов в диапазоне между этими числами, я не могу сообразить как записать эти действия и вывести их
ПР.
первое число:2
второе число:3
вывод:
2!=2
3!=6,
примерно такой столбец должен получатся
100, это максимальное значение , которое можно ввести
Necker вне форума Ответить с цитированием
Старый 23.09.2018, 18:13   #4
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

О, а я-то Паскаль и не знаю...
Ну это просто. Просите пользователя ввести сразу два числа. Затем, когда придёт время выводить результат, делаете конструкцию:
if (i >= a1) printf (i!);
Если счётчик меньше a1, то ничего не напечатается.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 23.09.2018, 18:19   #5
Necker
Пользователь
 
Регистрация: 23.09.2018
Сообщений: 23
Смущение

ВИдимо я слишком туп для этого(. Если не сложно можете написать алгоритм действий пошаговый, мю поможет для моей тупой головушки
Necker вне форума Ответить с цитированием
Старый 23.09.2018, 18:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  k, i, j, m, n: integer;
  s : int64;

begin
  writeln ('Input first number');
  readln(m);
  writeln ('Input second number');
  readln(k); // ввели число, факториал которого надо посчитать.

  for i:= m to k do  // цикл от m до k
  begin
    s:= 1; // это у нас переменная для результата.
    Write(i:1,'! = 1');
    for j:=2 to i do begin
      Write(' * ',j:1);  // вывод сомножителей
      s:= s*j;
    end;
    writeln(' = ', s); // вывод результата.
  end;
  WriteLn('Press Enter to finish.');
  readln;
end.

Цитата:
Сообщение от jura_k Посмотреть сообщение
Если речь идёт о 100, то цифр в вашем процессоре не хватит, чтобы подсчитать это число.
Юра частично прав.
Предложенный мной код будет работать только для чисел <=20
Больше не хватает стандартной разрядности для хранения целочисленных значений.
Чтобы точно посчитать факториал больших чисел нужно использовать длинную арифметику (кстати, примеры были на форуме,
как раз чтобы посчитать факториал 100!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2018, 18:23   #7
Necker
Пользователь
 
Регистрация: 23.09.2018
Сообщений: 23
По умолчанию

Спасибо Вам огромное, не знаете ли каких-то обучающих ресурсов для чайников в программирование ?
Necker вне форума Ответить с цитированием
Старый 23.09.2018, 18:26   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://www.programmersforum.ru/showthread.php?t=303485
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.09.2018, 18:29   #9
Necker
Пользователь
 
Регистрация: 23.09.2018
Сообщений: 23
По умолчанию

Cпасибо
Necker вне форума Ответить с цитированием
Старый 23.09.2018, 19:05   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Чтобы точно посчитать факториал больших чисел нужно использовать длинную арифметику
А если не точно - вообще использовать real. А какому ляху нужна целочисленная точность до сотого знака ?
digitalis вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
Программа вычисляет сумму всех нечетных чисел в определенном диапазоне Diana528 Общие вопросы C/C++ 52 05.03.2013 19:53
найти сумму всех нечетных чисел в диапазоне от 42 до 73. mkerimkulov Общие вопросы C/C++ 11 29.09.2012 11:09
Подсчитать количество равносторонних треугольников с вершинами в заданном множестве точек на плоскости (Delphi) dea_celeste Помощь студентам 4 17.05.2012 15:33
Посчитать сумму всех целых чисел в этом диапазоне LION7777 Фриланс 14 15.06.2010 00:16