Алгоритм вычисления вероятности события - C (СИ)

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

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

Разработайте и представьте в виде кода программы на языке Си алгоритм вычисления вероятности события, используя классическое определение вероятности и формулы комбинаторики, на примере следующей задачи. Инвестор формирует пакет из R акций. В его распоряжении имеются N акций нефтяной компании, M акций банков и K акций телекоммуникационной компании. Найти вероятность того, что инвестор сформировал пакет из n акций нефтяной компании, m акций банков и k акций телекоммуникационной компании. Для решения задачи будем полагать, что событие A = {инвестор сформировал пакет из n акций нефтяной компании, m акций банков и k акций телекоммуникационной компании}. Тогда вероятность события A вычисляется по формуле: P(A) = N(A) / N(•); где N(A) – число исходов, благоприятствующих событию А, N(•) – общее число исходов. Для вычисления этих значений следует определить число сочетаний: N(•)=CRN+M+K; N(A) = CnN * CmM * CkK. где биномиальные коэффициенты CRN+M+K; CnN * CmM * CkK вычисляются по формуле: Cab = a! / b! * (a-b)!. Код программы должен содержать две пользовательские функции: binom() – для вычисления биномиальных коэффициентов ; factorial() – для вычисления факториалов, необходимых при определении числа сочетаний. В общем понятно, что ничего не понятно. Я сделала вот такой код, который выдает 0,0000000... помогите, пожалуйста, понять, где я ошибаюсь..
Листинг программы
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int factorial(int x);
  5. int binom(int x2, int x3, int x4);
  6. int a, b, result, c = a-b;
  7. int main()
  8. {
  9. printf (" Vvedite celoe a=");
  10. scanf ("%d", &a);
  11. printf (" Vvedite celoe b=");
  12. scanf ("%d", &b);
  13. result = binom (factorial(a), factorial(b), factorial(c));
  14. printf (" Result = %f\n\n", binom);
  15. system ("pause");
  16. return 0;
  17. }
  18. int binom(int x2, int x3, int x4)
  19. {
  20. return (factorial(a) / (factorial(b) * factorial(c)) );
  21. }
  22. int factorial(int x)
  23. { int t;
  24. if(x <=1)
  25. t = 1;
  26. else
  27. t = x * factorial(x - 1);
  28. return t;
  29. }

Решение задачи: «Алгоритм вычисления вероятности события»

textual
Листинг программы
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int factorial(int x);
  6. int binom(int x2, int x3, int x4);
  7. //int a, b, result, c = a-b;    Старайтесь не объявлять глобальные переменные, тем более с=а-б, вы еще не ввели
  8. //данные в а и б, а уже вычисляете с
  9. int main()
  10. {  int a, b, result, c; //Объявляем переменные в теле цикла
  11.     printf (" Vvedite celoe a=");
  12.     scanf ("%d", &a);
  13.     printf (" Vvedite celoe b=");
  14.     scanf ("%d", &b);
  15.     c = a - b; // Вычисляем с
  16.     result = binom (factorial(a), factorial(b), factorial(c));
  17.   //  printf (" Result = %f\n\n", binom); Результат находится в переменой result, причем тут  binom вообще не понятно
  18.     printf(" Result = %d\n\n", result); // Датовый тип int  требует %d
  19.     system ("pause");
  20.     return 0;
  21. }
  22.  
  23. int binom(int x2, int x3, int x4)
  24.     {
  25.          //  return (factorial(a) / (factorial(b) * factorial(c)) ); а зачем вы передавали в функцию какие то данные если
  26. //потом используете а, б ,с
  27.     return (factorial(x2) / (factorial(x3) * factorial(x4)));
  28.     }
  29.    
  30. int factorial(int x)
  31.     {             int t;
  32.                       if(x <=1)
  33.                       t = 1;
  34.                   else
  35.                       t = x * factorial(x - 1);
  36.                   return t;
  37.     }

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


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

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

9   голосов , оценка 4.333 из 5

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

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

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