Алгоритм вычисления вероятности события - 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... помогите, пожалуйста, понять, где я ошибаюсь..
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
 
int factorial(int x);
int binom(int x2, int x3, int x4);
int a, b, result, c = a-b;
int main()
{   
    printf (" Vvedite celoe a=");
    scanf ("%d", &a);
    printf (" Vvedite celoe b=");
    scanf ("%d", &b);
    result = binom (factorial(a), factorial(b), factorial(c));
    printf (" Result = %f\n\n", binom);
    system ("pause");
    return 0;
} 
 
int binom(int x2, int x3, int x4)
    {
           return (factorial(a) / (factorial(b) * factorial(c)) );
    }
    
int factorial(int x)
    {             int t;
                      if(x <=1)
                      t = 1;
                  else
                      t = x * factorial(x - 1);
                  return t;
    }


textual

Код к задаче: «Алгоритм вычисления вероятности события - C (СИ)»

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
 
int factorial(int x);
int binom(int x2, int x3, int x4);
//int a, b, result, c = a-b;    Старайтесь не объявлять глобальные переменные, тем более с=а-б, вы еще не ввели 
//данные в а и б, а уже вычисляете с 
int main()
{  int a, b, result, c; //Объявляем переменные в теле цикла 
    printf (" Vvedite celoe a=");
    scanf ("%d", &a);
    printf (" Vvedite celoe b=");
    scanf ("%d", &b);
    c = a - b; // Вычисляем с
    result = binom (factorial(a), factorial(b), factorial(c));
  //  printf (" Result = %f\n\n", binom); Результат находится в переменой result, причем тут  binom вообще не понятно
    printf(" Result = %d\n\n", result); // Датовый тип int  требует %d
    system ("pause");
    return 0;
} 
 
int binom(int x2, int x3, int x4)
    {
         //  return (factorial(a) / (factorial(b) * factorial(c)) ); а зачем вы передавали в функцию какие то данные если 
//потом используете а, б ,с
    return (factorial(x2) / (factorial(x3) * factorial(x4)));
    }
    
int factorial(int x)
    {             int t;
                      if(x <=1)
                      t = 1;
                  else
                      t = x * factorial(x - 1);
                  return t;
    }
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

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

Источник