#include #include #include #define MAX_GRAD 50 // numero massimo di gradini #define MAX_FROG 1000 // numero massimo di rane /* // function prototipes */ int jump_rana(int); void writeonfile(double [], int); void gara(int [], int); int main() { int Nfrog, rana; int jump, Njumps, Mjumps; int gradino; int conta[MAX_GRAD+1]={0}; double dconta[MAX_GRAD+1]; int salti[MAX_FROG]; int n; srand48(time(0)); // Leggi da tastiera il numero di rane do { printf("Numero di rane? (maggiore di 0 minore di %d) \n",MAX_FROG); scanf("%d",&Nfrog); if(Nfrog<=0 || Nfrog > MAX_FROG)printf("Troppe rane o troppo poche!"); } while (Nfrog<=0 || Nfrog > MAX_FROG); Mjumps=0; // numero medio di salti necessari ad arrivare in cima for (rana=1; rana<=Nfrog; rana++) { Njumps=0; // numero di salti per arrivare all'ultimo gradino gradino = 0; // contatore che registra il gradino sul quale si trova la rana printf("\nRANA numero %d\n",rana); do { jump=jump_rana(gradino); gradino = gradino + jump; conta[gradino]++; Njumps++; // printf("%10d %4d %4d\n",Njumps,gradino,jump); } while (gradino != MAX_GRAD); printf("La rana numero %2d e' arrivata in %5d salti\n", rana,Njumps); salti[rana-1]=Njumps; Mjumps+=Njumps; } // numero di rane printf("\nIl numero medio di salti necessari a raggiungere la cima e' %6.2f\n",(double)Mjumps/Nfrog); // Calcola chi ha vinto la gara gara(salti,Nfrog); for (n=0;n 0.5 && pos <= (MAX_GRAD-2) ) { jump=avanti; } else if(r<=0.5 && pos>0) { jump=indietro; } else { jump=ferma; } return jump; } void writeonfile(double data[], int ndata) { int i; FILE *fp; if((fp = fopen("data.dat", "w")) == NULL) { printf("Cannot open file.\n"); exit(0); } for (i=0;i