Алгоритм вычисления вероятности события - 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
Листинг программы
- #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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д