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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2022, 14:15   #1
Alastar11
Новичок
Джуниор
 
Регистрация: 26.12.2022
Сообщений: 1
По умолчанию paskal

//9) В городском зоопарке содержатся животные N (1 ≤ N ≤ 1000) разных видов.
//Для участия в международной выставке зоопарк должен представить трех животных
//различных видов. Требуется написать программу, которая вычислит число способов
//выбрать трех животных для участия в выставке.
//Например, если в зоопарке два медведя, тигр, лев и пингвин, то есть семь способов выбрать трех животных:
//1. первый медведь, тигр и лев;
//2. первый медведь, тигр и пингвин;
//3. первый медведь, лев и пингвин;
//4. второй медведь, тигр и лев;
//5. второй медведь, тигр и пингвин;
//6. второй медведь, лев и пингвин;
//7. тигр, лев и пингвин.

переделать используя функцию перебор

const n = 4;
var i,j,k,m,l,p: integer;
s: real;
a: array[1..n] of integer;
begin
s:= 0;

a[1]:=2; //можно задать любое количество животных
a[2]:=1;
a[3]:=1;
a[4]:=1;
writeln(a[1],' ',a[2],' ',a[3], ' ' ,a[4]);

for i:=1 to (n-2) do begin
for j:=(i+1) to (n) do begin
for k:=(j+1) to (n) do begin
s+=1;
writeln(i,' ',j,' ',k);
m:=1;l:=1;p:=1;
while m<a[i] do begin
writeln(i,'(',m,') ',j,' ',k);
s+=1; m+=1;
end;
while l<a[j] do begin
writeln(i,' ',j,'(',l,') ',k);
s+=1; l+=1;
end;
while p<a[k] do begin
writeln(i,' ',j,' ',k,'(',p,')');
s+=1; p+=1;
end;
end;
end;
end;

writeln('Ответ: ', s, ' способов');
end.
Alastar11 вне форума Ответить с цитированием
Старый 27.12.2022, 01:36   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Предложенный пример вводит в заблуждение.
Из условия задачи следует, что у зоопарка нет двух медведей.
Цитата:
В городском зоопарке содержатся животные N (1 ≤ N ≤ 1000) разных видов.
Из вашего условия следует, что надо искать число сочетаний из N по m = 3.
C = n!/(m! * (n - m)!)

Но тут лежит мина...
Как на Паскале посчитать N!, если N = 1000. Хз...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 27.12.2022, 02:27   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Как на Паскале посчитать N!, если N = 1000. Хз...
Либо по формуле https://ru.wikipedia.org/wiki/%D0%A4...BD%D0%B3%D0%B0
Результат влезет в Extended ( в него до 1750! влазит ).
Или С(n;m) считать через Ln и Exp , там сокращения будут.
И вобще при m=3 саму формулу можно сократить C(n;3)= n*(n-1)*(n-2)/6
type_Oleg вне форума Ответить с цитированием
Старый 27.12.2022, 09:14   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Из вашего условия следует, что надо искать число сочетаний из N по m = 3.
C = n!/(m! * (n - m)!)
не совсем так.
формула не учитывает
что одного вида (медведей например) особей БОЛЬШЕ чем одна
и что наборы различающиеся выбором первого или второго медведя есть РАЗНЫЕ.
выборки 1 и 4 из первого поста.
а также что в выборке не может быть ДВУХ особей одного вида(двух медведей).

можно было бы домножить на число особей одного вида (первый, второй и т.д. медведь),
но вот беда число особей для каждого вида свое!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.12.2022 в 09:20.
evg_m вне форума Ответить с цитированием
Старый 27.12.2022, 11:56   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

type_Oleg
Цитата:
И вобще при m=3 саму формулу можно сократить C(n;3)= n*(n-1)*(n-2)/6
Потом сообразил, но не стал писать. Пусть ТС включает своё серое вещество.

evg_m
Цитата:
не совсем так.
формула не учитывает
что одного вида (медведей например) особей БОЛЬШЕ чем одна
1. Особи могут быть только разного вида: следует из внимательного прочтения задания (в моём посте это выделено жирным).
2. Число одинаковых особей, например, 2-а медведя, в условии никак не просматривается.
Это воображение ТС. Иначе, кроме N, задавались бы и другие значения, например, 8 гусей, 3 зайца, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(Paskal) Kastiel11 Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2013 21:57
Paskal qscwdv Помощь студентам 0 08.02.2012 11:05
paskal abc,turbo paskal andrei57 Паскаль, Turbo Pascal, PascalABC.NET 3 08.09.2011 05:33
Free Paskal и Turbo Paskal Polly~Sunbeam Паскаль, Turbo Pascal, PascalABC.NET 7 18.04.2011 16:00
Paskal netcher Помощь студентам 3 05.02.2009 02:04