#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
float factorial(float);
float combinacion(float, float);
main()
{
float x, x_1, x_2, number;
float n, p, q, suma = 0;
float binomial = 0, sumatoria = 0;
char opcion, salida;
do{
system("cls");
printf("\tDistribucion binomial \n\n");
printf("[a]-Funcion individual.\n");
printf("[b]-Funcion acumulada.\n\n");
printf("*Selecciona la funcion que desee calcular: ");
scanf("%s", &opcion);
switch(opcion)
{
case 'a': printf("\n\n\a-Funcion individual de distribucion binomial f(x).-\n");
printf("*Ingrese el numero de eventos 'n': ");
scanf("%f", &n);
do{
printf("\n*Ingrese la probabilidad de exito %: ");
scanf("%f", &p);
if(p > 1)
p /= 100;
q = 1 - p;
suma = p + q;
}while(suma != 1);
do{
printf("\n*Ingrese el valor de 'x': ");
scanf("%f", &x);
if(x > n)
printf("ERROR 658: 'x' no puede ser mayor a 'n'\n");
if(x < 0)
printf("ERROR 725: 'x' no puede ser menor a cero.\n");
}while( -((x > n) || (x < 0)) );
printf("\n\n-Resultados del modelo binomial.-\n\n");
binomial = combinacion(n, x) * pow(p, x) * pow(q, n-x);
printf(" B(%2.0f, %2.0f, %2.0f) = %4.6f = %4.2f %", x, n, p, binomial, binomial * 100);
break;
case 'b': printf("\n\n\a-Funcion acumulada de distribucion binomial F(x).-\n");
printf("*Ingrese el numero de eventos ´n´");
scanf("%f", &n);
do{
printf("\n*Ingrese la probabilidad de exito %: ");
scanf("%f", &p);
if(p > 1)
p /= 100;
q = 1 - p;
suma = p + q;
}while(suma != 1);
do{
printf("*Ingresa x_1: ");
scanf("%f", &number);
x_1 = number;
if(x_1 < 0)
printf("\nERROR 458: El intervalor x_1 no puede ser menor a cero.\n");
if(x_1 > n)
printf("\nERROR 218: El intervalo x_1 no puede ser mayor a 'n'.\n\n");
}while( -( (x_1 < 0)||(x_1 > n) ) );
do{
printf("*Ingresa x_2: ");
scanf("%f", &x_2);
if(x_2 < x_1)
printf("\nERROR 147: El intervalo x_2 no puede ser menor a x_1.\n");
if(x_2 > n)
printf("\nERROR 231: El intervalo x_2 no puede ser mayor a 'n'.\n");
}while( -( (x_2 < x_1)||(x_2 > n) ) );
printf("\n\n-Resultados del modelo binomial.-\n\n");
for(x_1 = number; x_1 <= x_2; x_1++){
binomial = combinacion(n, x_1) * pow(p, x_1) * pow(q, n - x_1);
printf(" B(%2.0f, %2.0f, %2.2f) = %4.6f\n", x_1, n, p, binomial);
sumatoria += binomial;
}
printf("\n Probabilidad final.");
printf("\n F(x) = (x; %2.0f, %2.0f) = %4.4f = %4.2f%", n, p, sumatoria, sumatoria * 100);
break;
default: printf("\nERROR 254: caracter de opcion mal introducido, intentelo de nuevo.\n");
break;
}//fin del menu opcion
printf("\n\n¿Desea un nuevo calculo(S/N)?");
salida = getch();
salida = tolower(salida);
binomial = 0;
sumatoria = 0;
}while(salida == 's');
system("cls");
printf("\tModelo binomial \n\n");
printf("\n\nVuelve pronto...");
getch();
return 0;
}//fin de main
float combinacion(float a, float b)
{
float combinacion;
combinacion = ( factorial(a) /( factorial(b) * factorial(a-b) ));
return combinacion;
}
float factorial(float number)
{
float factorial = 1, counter;
for(counter = number; counter >= 1; counter--)
factorial *= counter;
return factorial;
}