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