Написать программу вычисления числа сочетаний из m элементов по n - Pascal

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Вот,дали,вроде, не сложную задачу:Написать программу вычисления числа сочетаний из m элементов по n (n≤m) Сmn = m!/n!(m-n)!, где m и n вводятся с клавиатуры, используя рекуррентную формулу Cm0 =1,Cmn = (m-n+1)/n*Cmn-1 Вроде все работает нормально,кроме нахождения Cmn = (m-n+1)/n*Cmn-1.Неправильно считает(при правильных значениях M и N).Кому не сложно,посмотрите что не так.Заранее спасибо! Вот что получилось:
Листинг программы
  1. var N,M,Cmn:integer;
  2. function Fact(x:integer):longint;
  3. begin
  4. if x <= 1 then fact := 1
  5. else fact := x * fact(x - 1);
  6. end;
  7. begin
  8. Write('N=');
  9. readln(N);
  10. Write('M=');
  11. readln(M);
  12. writeln('M/(N*(M-N))=',Fact(M)div(Fact(N)*Fact(M-N)));
  13. writeln('Fact(N)=' ,Fact(N) ,'Fact(M)=' ,Fact(M) ,'Fact(M-N)=' ,Fact(M-N));
  14. writeln('Cm0:=',(Fact(M)div(Fact(N-1)*Fact(M-N))));
  15. writeln('Fact(N)=' ,Fact(N-1) ,'Fact(M)=' ,Fact(M) ,'Fact(M-N)=' ,Fact(M-N));
  16. writeln ('Cmn=' , ((M-N+1)/(N))*(Fact(M)div(Fact(N-1)*Fact(M-N))));
  17. end.
Вот что выдает паскаль: N=3 M=6 M/(N*(M-N))=20 Fac(N)=6Fac(M)=720Fac(M-N)=6 Cm0:=60(а должно быть 15) Fac(N)=2Fac(M)=720Fac(M-N)=6 Cmn=80(а должно быть 20)

Решение задачи: «Написать программу вычисления числа сочетаний из m элементов по n»

textual
Листинг программы
  1.   C:=1;
  2.   for i:=1 to N do
  3.     C:=((M-i+1) div i)*C;

Объяснение кода листинга программы

  1. Создается переменная C и ей присваивается значение 1.
  2. Запускается цикл for от 1 до N (включительно).
  3. Внутри цикла переменной C присваивается новое значение, которое вычисляется как результат деления с округлением в меньшую сторону от выражения ((M-i+1) div i)*C.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы