#include #include #include #include #include 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; }