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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2018, 22:31   #1
Jihad
Новичок
Джуниор
 
Регистрация: 10.01.2018
Сообщений: 1
По умолчанию Помогите допилить рекурсивный факториал к ноду

Код:
Uses HOD,crt;
type mas=array[1..100] of integer;
var a:mas; max,min,n,i,d:integer;
factorial: longint;

begin
 writeln ('Введите размероность массива');
 read (n);
 writeln ('Введите элементы массива');
 for i:=1 to n do
   readln (a[i]);
begin
min:=a[1];
for i:=2 to n do
  begin
     if min>a[i] then
       min:=a[i];
  end;
begin
max:=a[1];
for i:=2 to n do
  begin
     if max<a[i] then
       max:=a[i];
  end;
  writeln ('        ');
writeln (nod(min,max));
end;
end;
end.
Модуль:

Код:
unit HOD;
interface
function Nod (a,b:integer):integer;
implementation
function Nod (a,b:integer):integer;
begin
if a=b then Nod:=a else if a>b then Nod:=Nod(a-b ,b)
else Nod:=Nod(a, b-a);
end;
end.
Архив с прогой вложен
Условие:
Найти НОД максимального и минимального элементов массива. Найдите факториал найденного значения НОД.

Нужна процедура нахождения факториала найденного значения НОД

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор
Вложения
Тип файла: zip Архив ZIP - WinRAR.zip (729 байт, 6 просмотров)

Последний раз редактировалось Serge_Bliznykov; 11.01.2018 в 10:28. Причина: Неполность содержания
Jihad вне форума Ответить с цитированием
Старый 11.01.2018, 10:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ужас. вы код форматировать не пробовали? на вскидку, там с begin не порядок.


Цитата:
Сообщение от Jihad Посмотреть сообщение
Нужна процедура нахождения факториала найденного значения НОД
а рекурсия зачем? факториал прекрасно находится через умножение в цикле!

впрочем, хочется рекурсию?
получите и распишитесь:
http://www.programmersforum.ru/showthread.php?t=151191

только учтите, что факториал - это чрезвычайно быстро растущая функция, числа должны быть небольшие, иначе будет переполнение (число не войдёт в размерность integer)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.01.2018, 12:16   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
числа должны быть небольшие, иначе будет переполнение (число не войдёт в размерность integer)
А мы их переведем в extended, и пусть себе вычисляются

Последний раз редактировалось digitalis; 11.01.2018 в 20:38.
digitalis на форуме Ответить с цитированием
Старый 11.01.2018, 13:34   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А мы их переведем в extended, и пусть себе вычисляются
да ну? всё так просто?
Напомните, чему равен факториал 3000 (3000!= ???) ?
а 100000! ?

а во вторых, даже уже 20! Вы не получите точно, а только приблизительно.

не, я не спорю, вполне есть задачи, где даже приблизительного значения достаточно. Но это не всегда так.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.01.2018, 16:05   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Напомните, чему равен факториал 3000 (3000!= ???) ?
Ага, сейчас выложу Все 9131 знака..
Кстати, наступал на грабли, когда Python факториал посчитал, а вот дробно делить его отказался:
Код:
OverflowError: integer division result too large for a float
Black Fregat вне форума Ответить с цитированием
Старый 11.01.2018, 20:42   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Напомните, чему равен факториал 3000 (3000!= ???) ?
Таких факториалов не бывает, потому что шахматных клеток всего 64, а карт в преферансе и того вполовину меньше.
digitalis на форуме Ответить с цитированием
Старый 11.01.2018, 23:08   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
а карт в преферансе и того вполовину меньше
А у вас там в Минске что играют? Классику? Ленинград? Сочи?
Black Fregat вне форума Ответить с цитированием
Старый 12.01.2018, 11:15   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Щас давно не играю в реале, только на компе - партнеры кто затерялся, кто уже умер... В пору активности наша компания предпочитала спокойную интеллигентную ленинградку, в студенческие времена писали сочинку .
Модер, sorry for offtopic

Последний раз редактировалось digitalis; 12.01.2018 в 21:19.
digitalis на форуме Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО][Python] факториал, Фибоначчи: в ходе выполнения в цикле все последующие значения факториалов перемножаются с предыдущими, а хочу чтоб выводился факториал конкретного числа Staniislav Помощь студентам 2 19.08.2017 23:57
поиск маленькой картинки в большой. Помогите допилить)))) Михаил22042016 Общие вопросы Delphi 2 11.05.2016 07:16
Помогите допилить скрипт SergeySS PHP 2 06.08.2014 16:17
Вычислить факториал числа п. Факториал числа представить в виде целочисленного массива десятичных цифр. M1kefly Общие вопросы C/C++ 1 07.07.2013 21:00
факториал ( c рекурсивный функцией ) Aydan Паскаль, Turbo Pascal, PascalABC.NET 3 12.05.2011 00:19