## thangeram 3 years ago #include<stdio.h> #include<conio.h> #include<math.h> float fact(int x); void main() { int n,x,m,a; float pmf,mean,var,p,q,ncr; printf("\t\t**********poisson Distribution***************\n"); scanf("%d",&x); printf("\nEnter value for alpha: "); scanf("%d",&a); pmf=(exp(-a)*pow(a,x))/fact(x); mean=a; var=a; printf("\n\nMean: %f\nVariancd: %f\npmf:%f",mean,var,pmf); getch(); } float fact(int f) { int i; float s=1.0; for(i=f;i>0;i--) { s=s*1; } return s; } help me friends its urgent i cant find satisfying output

1. nick67

hi thangeram, what's the purpose of fact function ?

2. thangeram

to check condition that ans must be below 1 and to calulate pmf

3. nick67

as I can see that function (fact) always returns a value of 1.0

4. thangeram

hmm your correct but nick tell me why it is not giving satisfying output

5. nick67

I don't know what the "fact" function should do on its input f

6. thangeram

i am showing you another example

7. thangeram

#include <stdio.h> #include <math.h> /* protype of "e", exp(x) == exp^x */ #include <conio.h> /* For clrscr() */ double Factorial1 (double a) { double answer = 1.0; while(a>1) answer *= a--; return answer; } int main(void) { double result, res1, res2; double i = 0.0, k = 0.00; double answer = 0.0; result = res1 = res2 = 0.0; /* makes it easier to see input prompts */ printf("Enter mean: "); scanf("%lf", &i); printf("Enter value of interest: "); scanf("%lf", &k); /* factorial of value of interest */ answer = Factorial1(k); /* formula for k */ result = pow(i,k); res1 = 1/(exp(k)); res2 = (result * res1) / answer; printf("answer is ... : %0.20lf", res2); return 0; }

8. nick67

may be it should evaluate the factorial value of f ? (f * f-1 * f-2 *...*1)

9. nick67

in that case you should have: float fact(int f) { float s=1.0; while(f>0) { s=s*f; f--; } return s; }

10. thangeram

thanx nick

11. nick67

you're welcome :-)