#include #include #include #include #define R 0.77 #define LATO 0.5 #define NMIN 330 #define NMAX 550 #define NEXP 100 /* 3 pt: interfaccia */ void contaPepe(double, double, int* , int*, int* ); /* 2 pt: interfaccia */ void genCirc(double, double*, double*); /* 1 pt: interfaccia */ double media(int*, int); int main() { /* 1 pt: array di lunghezza giusta */ int N; int A[NEXP], B[NEXP], C[NEXP]; int i,Na,Nb,Nc,iexp; double x,y; srand48( time(0) ); /* 1 pt: stampa messaggio */ printf("benvenuti alla simulazione della caduta del pepe!\n"); /* 2 pt: corretta acquisizione di N */ do{ printf("numero di grani di sabbia %d <= N <= %d: ", NMIN, NMAX); scanf("%d", &N); } while( NNMAX ); /* 2 pt: ciclo corretto e di lunghezza giusta */ for(iexp=0; iexp=LATO) (*Nc)++; } return; } void genCirc(double r, double*x, double* y) { /* 3 pt: corretta generazione nel cerchio */ do { *x = -r+2*r*lrand48()/RAND_MAX; *y = -r+2*r*lrand48()/RAND_MAX; } while( (*x)*(*x) + (*y)*(*y) > r*r ); return; } double media(int* vec, int n) { /*3 pt: corretto calcolo della media */ int i; double m = 0.; for(i=0; i