Witam, proszę o sprawdzenie programu. Generalnie problem polega na tym, że nie widzę błędu w kodzie a mimo wszystko program zwraca złe wyniki. Poniżej polecenie i kod.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int n, p, i, sil;
float q, e, l;
printf("Podaj n, q, e:\n");
scanf("%d %f %f", &n, &q, &e);
for(p=0;;p++){
l=0;
sil=1;
if(p>0){
for(i=1;i<=p;i++){
sil*=i;
}
}
l=(1.0/(float)sil)*pow(n-q,p-1)*exp(n*q);
if(l<e){
break;
}
}
printf("Min wartosc p spelniajaca nierownosc to: %d\n",p);
system("pause");
return 0;
}