- Tema Autor
- #1
Hola amigos y amigas del foro espero que me puedan ayudar hace unos dias termine un programa que me pidio u nprofesor para hacer graficas de la forma binomial, poisson, exponencial, normal y uniformee hice todos en un solo programa en c++ pero me extraña que corria no se que le pudo pasar que ahora me marca errores talvez algo este mal o mi c++ este fallando espero me puedan ayudar a checarlo bien porfa necesito de su ayuda de ante mano muchas gracias
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#define Ix 50
#define Iy 50
#define Fx 500
#define Fy 430
#define PI 3.141592
void graficos(void)
{
int gdriver = DETECT, gmode, errorcode;
intgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch(); exit(1);
}
}
double factorial(double n)
{
double i;
i=1;
for (;n>0;n--)
i=i*n;
return i;
}
float binomial(int x,int n,float p)
{
return (factorial(n)/(factorial(x)*factorial(n-x)))*(pow(p,x))*(pow(1-p,n-x));
}
double poisson(int x,int n,double p)
{
double poi,l;
l=n*p;
poi=( pow ( l , x ) * exp(-l) ) / factorial(x);
return poi;
}
float normales(float x,float m,float s)
{
float a,b,c;
a=(x-m)*(x-m);
b=(2*s*s);
return (1/sqrt(2*PI*s))*exp(-a/b);
}
float uniforme(float x,float a,float b)
{
if((a<x) && (x<b) )
return (1 / (b-a) );
else
return 0 ;
}
double exponencial(double x,double l)
{
if(x>=0)
return (l*exp(-l*x));
else
return 0;
}
void pcarteciano(int nx,int ny)
{
float sx,sy,l;
int i,y;
char buff[10]={0};
graficos();
setfillstyle(1,0);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
sx=(Fx-Ix)/nx;
sy=(Fy-Iy)/ny;
setcolor(10);
for(i=Ix+sx;i<Fx;i=i+sx)
line(i,Fy,i,Fy+5);
for(i=Fy;i>Iy;i=i-sy)
line(Ix-5,i,Ix+5,i);
setlinestyle(4,3,5);
l=0;
setcolor(15);
settextjustify(0,0);
for(y=Fy;y>Iy;y=y-sy)
{
sprintf(buff,"%.2f",l);
outtextxy(Ix-30,y,buff);
l+=.1;
}
settextjustify(0,2);
}
void funciones()
{
int n,y,op;
float p,resul,sx,sy,x,mu,sigma,a,landa,b;
char buff[50]={0};
do{
textbackground(1);
clrscr();
gotoxy(20,2);
printf("FUNCIONES DE PROBABILIDAD ");
gotoxy(46,5); printf("4.BINOMIAL");
gotoxy(46,7); printf("5.POISSON");
gotoxy(16,5); printf("1.NORMAL");
gotoxy(16,7); printf("2.UNIFORME");
gotoxy(16,9); printf("3.EXPONENCIAL");
gotoxy(46,9); printf("6.SALIR");
gotoxy(12,14); printf("ELIJA LA OPCION");
op=getch();
n=10;
if (op=='4'||op=='5')
{
clrscr();
printf("Valor de N:");
scanf("%d",&n);
do{
printf("Valor de p=");
scanf("%f",&p);
}while(p>=1);
pcarteciano(n+1,10);
sx=(Fx-Ix)/(n+1);sy=(Fy-Iy)/10;
setcolor(9);
}
switch(op){
case '1'://Normal
clrscr();
printf("Deme la media:");
scanf("%f",&mu);
printf("Deme la desviacion estandar:");
scanf("%f",&sigma);
pcarteciano(n+1,10);
sx=(Fx-Ix)/(n+1);sy=(Fy-Iy)/10;
a=mu-5;
for(x=0;x<10;x=x+.01)
{
resul=normales(x,5,sigma);
y=Fy-resul*10*sy;
putpixel(x*sx+Ix,y,10);
}
y=50;
n=0;
for(x=Ix;x<Fx;x+=sx)
{
sprintf(buff,"%.1f",a++);
settextstyle(2,0,4);
outtextxy(x,Fy+10,buff);
resul=normales(n,5,sigma);
sprintf(buff,"%5.1f %2.4f",a-1,resul);
settextstyle(0,0,0);
outtextxy(Fx+20,y,buff);
n++;
y+=10;
}
settextstyle(0,0,0);
getch();
closegraph();
break;
case '2'://uniforme
clrscr();
printf("Deme el resulor de a:");
scanf("%f",&a);
printf("Deme el resulor de b:");
scanf("%f",&b);
if(a>b)
break;
n=b+2;
sx=(Fx-Ix)/(n+2);
resul=uniforme((b+a)/2,a,b);
sy=(Fy-Iy)/(int(resul+2));
graficos();
setfillstyle(1,8);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
for(x=0;x<(int(resul+2));x++)
{
sprintf(buff,"%.2f",x);
outtextxy(Ix-40,Fy-x*sy,buff);
}
setlinestyle(2,3,3);
sprintf(buff,"%.2f",resul);
y=Fy-resul*sy;
setcolor(10);
outtextxy(b*sx+Ix+5,y,buff);
setcolor(15);
for(x=0;x<=n+2;x=x+.01)
{
resul=uniforme(x,a,b);
y=Fy-resul*sy;
putpixel(x*sx+Ix,y-1,10);
putpixel(x*sx+Ix,y,10);
putpixel(x*sx+Ix,y+1,10);
}
x=a+.00001;
resul=uniforme(x,a,b);
y=Fy-resul*sy;
line(a*sx+Ix,y,b*sx+Ix,y);
line(a*sx+Ix,y,a*sx+Ix,Fy);
line(b*sx+Ix,y,b*sx+Ix,Fy);
sprintf(buff,"%2.2f",a);
outtextxy(a*sx+Ix,Fy+10,buff);
sprintf(buff,"%2.2f",b);
outtextxy(b*sx+Ix,Fy+10,buff);
outtextxy(10,10,"Distribucion Normal");
getch();
closegraph();
break;
case '3'://exponencial
clrscr();
n=7;
printf("Deme el resulor de lamda:");
scanf("%f",&landa);
graficos();
setfillstyle(1,8);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
sx=(Fx-Ix)/(n+1);
sy=(Fy-Iy)/landa;
for(x=0;x<(n+1);x++)
{
sprintf(buff,"%.2f",x);
outtextxy(Ix-40,Fy-x*sy,buff);
line(Ix-5,Fy-x*sy,Ix,Fy-x*sy);
}
for(x=0;x<n;x=x+.001)
{
resul=exponencial(x,landa);
y=Fy-resul*sy;
putpixel(x*sx+Ix,y,10);
}
y=50;
n=0;
for(x=Ix;x<Fx;x+=sx)
{
sprintf(buff,"%2d",n);
settextstyle(2,0,4);
outtextxy(x,Fy+10,buff);
resul=exponencial(n,landa);
sprintf(buff,"%2d %2.4f",n,resul);
settextstyle(0,0,0);
outtextxy(Fx+20,y,buff);
n++;
y+=10;
line(x,Fy,x,Fy+5);
}
settextstyle(0,0,0);
getch();
closegraph();
break;
case '4'://binomial
setlinestyle(2,3,3);
y=50;
for(x=0;x<=n+1;x++)
{
resul=binomial(x,n,p);
line(x*sx+Ix,Fy-resul*10*sy,x*sx+Ix,Fy);
sprintf(buff,"%2.0f %2.4f",x,resul);
outtextxy(Fx+20,y,buff);
y+=10;
sprintf(buff,"%d",int(x));
outtextxy(Ix+x*sx,Fy+10,buff);
}
setcolor(15);
outtextxy(0,460,"Presione una tecla para continuar...");
getch();
closegraph();
break;
case '5'://poisson
y=50;
setlinestyle(2,3,3);
for(x=0;x<=n+1;x++)
{
line(x*sx+Ix,Fy-resul*10*sy,x*sx+Ix,Fy);
resul=poisson(x,n,p);
sprintf(buff,"%2.0f %2.4f",x,resul);
outtextxy(Fx+20,y,buff);
y+=10;
sprintf(buff,"%d",int(x));
outtextxy(Ix+x*sx,Fy+10,buff);
}
setcolor(14);outtextxy(0,460,"Presione una tecla para continuar...");
getch();
closegraph();
break;
}
}while(op!='6');
}
void main()
{
textmode(C80);
funciones();
}
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#define Ix 50
#define Iy 50
#define Fx 500
#define Fy 430
#define PI 3.141592
void graficos(void)
{
int gdriver = DETECT, gmode, errorcode;
intgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch(); exit(1);
}
}
double factorial(double n)
{
double i;
i=1;
for (;n>0;n--)
i=i*n;
return i;
}
float binomial(int x,int n,float p)
{
return (factorial(n)/(factorial(x)*factorial(n-x)))*(pow(p,x))*(pow(1-p,n-x));
}
double poisson(int x,int n,double p)
{
double poi,l;
l=n*p;
poi=( pow ( l , x ) * exp(-l) ) / factorial(x);
return poi;
}
float normales(float x,float m,float s)
{
float a,b,c;
a=(x-m)*(x-m);
b=(2*s*s);
return (1/sqrt(2*PI*s))*exp(-a/b);
}
float uniforme(float x,float a,float b)
{
if((a<x) && (x<b) )
return (1 / (b-a) );
else
return 0 ;
}
double exponencial(double x,double l)
{
if(x>=0)
return (l*exp(-l*x));
else
return 0;
}
void pcarteciano(int nx,int ny)
{
float sx,sy,l;
int i,y;
char buff[10]={0};
graficos();
setfillstyle(1,0);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
sx=(Fx-Ix)/nx;
sy=(Fy-Iy)/ny;
setcolor(10);
for(i=Ix+sx;i<Fx;i=i+sx)
line(i,Fy,i,Fy+5);
for(i=Fy;i>Iy;i=i-sy)
line(Ix-5,i,Ix+5,i);
setlinestyle(4,3,5);
l=0;
setcolor(15);
settextjustify(0,0);
for(y=Fy;y>Iy;y=y-sy)
{
sprintf(buff,"%.2f",l);
outtextxy(Ix-30,y,buff);
l+=.1;
}
settextjustify(0,2);
}
void funciones()
{
int n,y,op;
float p,resul,sx,sy,x,mu,sigma,a,landa,b;
char buff[50]={0};
do{
textbackground(1);
clrscr();
gotoxy(20,2);
printf("FUNCIONES DE PROBABILIDAD ");
gotoxy(46,5); printf("4.BINOMIAL");
gotoxy(46,7); printf("5.POISSON");
gotoxy(16,5); printf("1.NORMAL");
gotoxy(16,7); printf("2.UNIFORME");
gotoxy(16,9); printf("3.EXPONENCIAL");
gotoxy(46,9); printf("6.SALIR");
gotoxy(12,14); printf("ELIJA LA OPCION");
op=getch();
n=10;
if (op=='4'||op=='5')
{
clrscr();
printf("Valor de N:");
scanf("%d",&n);
do{
printf("Valor de p=");
scanf("%f",&p);
}while(p>=1);
pcarteciano(n+1,10);
sx=(Fx-Ix)/(n+1);sy=(Fy-Iy)/10;
setcolor(9);
}
switch(op){
case '1'://Normal
clrscr();
printf("Deme la media:");
scanf("%f",&mu);
printf("Deme la desviacion estandar:");
scanf("%f",&sigma);
pcarteciano(n+1,10);
sx=(Fx-Ix)/(n+1);sy=(Fy-Iy)/10;
a=mu-5;
for(x=0;x<10;x=x+.01)
{
resul=normales(x,5,sigma);
y=Fy-resul*10*sy;
putpixel(x*sx+Ix,y,10);
}
y=50;
n=0;
for(x=Ix;x<Fx;x+=sx)
{
sprintf(buff,"%.1f",a++);
settextstyle(2,0,4);
outtextxy(x,Fy+10,buff);
resul=normales(n,5,sigma);
sprintf(buff,"%5.1f %2.4f",a-1,resul);
settextstyle(0,0,0);
outtextxy(Fx+20,y,buff);
n++;
y+=10;
}
settextstyle(0,0,0);
getch();
closegraph();
break;
case '2'://uniforme
clrscr();
printf("Deme el resulor de a:");
scanf("%f",&a);
printf("Deme el resulor de b:");
scanf("%f",&b);
if(a>b)
break;
n=b+2;
sx=(Fx-Ix)/(n+2);
resul=uniforme((b+a)/2,a,b);
sy=(Fy-Iy)/(int(resul+2));
graficos();
setfillstyle(1,8);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
for(x=0;x<(int(resul+2));x++)
{
sprintf(buff,"%.2f",x);
outtextxy(Ix-40,Fy-x*sy,buff);
}
setlinestyle(2,3,3);
sprintf(buff,"%.2f",resul);
y=Fy-resul*sy;
setcolor(10);
outtextxy(b*sx+Ix+5,y,buff);
setcolor(15);
for(x=0;x<=n+2;x=x+.01)
{
resul=uniforme(x,a,b);
y=Fy-resul*sy;
putpixel(x*sx+Ix,y-1,10);
putpixel(x*sx+Ix,y,10);
putpixel(x*sx+Ix,y+1,10);
}
x=a+.00001;
resul=uniforme(x,a,b);
y=Fy-resul*sy;
line(a*sx+Ix,y,b*sx+Ix,y);
line(a*sx+Ix,y,a*sx+Ix,Fy);
line(b*sx+Ix,y,b*sx+Ix,Fy);
sprintf(buff,"%2.2f",a);
outtextxy(a*sx+Ix,Fy+10,buff);
sprintf(buff,"%2.2f",b);
outtextxy(b*sx+Ix,Fy+10,buff);
outtextxy(10,10,"Distribucion Normal");
getch();
closegraph();
break;
case '3'://exponencial
clrscr();
n=7;
printf("Deme el resulor de lamda:");
scanf("%f",&landa);
graficos();
setfillstyle(1,8);
bar(Ix,Iy,Fx,Fy);
rectangle(Ix,Iy,Fx,Fy);
sx=(Fx-Ix)/(n+1);
sy=(Fy-Iy)/landa;
for(x=0;x<(n+1);x++)
{
sprintf(buff,"%.2f",x);
outtextxy(Ix-40,Fy-x*sy,buff);
line(Ix-5,Fy-x*sy,Ix,Fy-x*sy);
}
for(x=0;x<n;x=x+.001)
{
resul=exponencial(x,landa);
y=Fy-resul*sy;
putpixel(x*sx+Ix,y,10);
}
y=50;
n=0;
for(x=Ix;x<Fx;x+=sx)
{
sprintf(buff,"%2d",n);
settextstyle(2,0,4);
outtextxy(x,Fy+10,buff);
resul=exponencial(n,landa);
sprintf(buff,"%2d %2.4f",n,resul);
settextstyle(0,0,0);
outtextxy(Fx+20,y,buff);
n++;
y+=10;
line(x,Fy,x,Fy+5);
}
settextstyle(0,0,0);
getch();
closegraph();
break;
case '4'://binomial
setlinestyle(2,3,3);
y=50;
for(x=0;x<=n+1;x++)
{
resul=binomial(x,n,p);
line(x*sx+Ix,Fy-resul*10*sy,x*sx+Ix,Fy);
sprintf(buff,"%2.0f %2.4f",x,resul);
outtextxy(Fx+20,y,buff);
y+=10;
sprintf(buff,"%d",int(x));
outtextxy(Ix+x*sx,Fy+10,buff);
}
setcolor(15);
outtextxy(0,460,"Presione una tecla para continuar...");
getch();
closegraph();
break;
case '5'://poisson
y=50;
setlinestyle(2,3,3);
for(x=0;x<=n+1;x++)
{
line(x*sx+Ix,Fy-resul*10*sy,x*sx+Ix,Fy);
resul=poisson(x,n,p);
sprintf(buff,"%2.0f %2.4f",x,resul);
outtextxy(Fx+20,y,buff);
y+=10;
sprintf(buff,"%d",int(x));
outtextxy(Ix+x*sx,Fy+10,buff);
}
setcolor(14);outtextxy(0,460,"Presione una tecla para continuar...");
getch();
closegraph();
break;
}
}while(op!='6');
}
void main()
{
textmode(C80);
funciones();
}