#include #include #include #include #define NMIN 330 #define NMAX 550 #define RAGGIO 0.77 #define XA 0.5 #define YA 0.5 #define XC 1.0 #define YC 1.0 #define REP 100 int getint(int , int); void genCirc(float*, float*); float uniforme(float, float); void contaPepe(float, float, int*, int*, int*); float media(int*); float perc(float, int); int main(){ int N, A[REP]={0}, B[REP]={0}, C[REP]={0}, i, j; float x, y, NA, NB, NC; srand48(time(0)); printf("Questo programma simula la caduta di N grani di pepe in un cerchio di raggio %.2f\n", RAGGIO); printf("Inserire il numero di grani di pepe tra %d e %d ", NMIN, NMAX); N=getint(NMIN, NMAX); for(j=0; jb){ printf("Valore non valido!\n"); printf("Inserire un valore tra %d e %d ", a, b); } }while(nb); return n; } //genera numeri casuali tra a e b float uniforme(float a, float b){ return a+(b-a)*(float)(lrand48())/RAND_MAX; } //genera casualmente punti in un cerchio void genCirc(float*x, float*y){ do{ *x=uniforme( -RAGGIO,RAGGIO); *y=uniforme( -RAGGIO,RAGGIO); }while( (*x)*(*x)+ (*y)*(*y) > RAGGIO*RAGGIO); } //conta i numeri di grani caduti in ciascuna mattonella void contaPepe(float x, float y, int* A, int* B, int* C){ if(x0 && y0) (*A)++; if(x0 && y>YA && yXA && y>YA && y