#include #include #include #include #define N_MEASURES 1000 void esperimento(double,double,double data[]); void generacoppia(double *, double *); double sommario(double data[],double,double); main(){ double MuK,sigma; double misure[N_MEASURES]={0.}; int i; double s1,s2,min,max,f; printf("Questo programma simula la misura della costante elastica di una molla assumendo una distribuzione\n" "Gaussiana per le misure. Si controlla la percentuale di misure che ricadono in un intervallo di estremi specificati dall'utente.\n\n"); printf("Inserire il valore di MuK (compreso in [800,900] N/m)\n"); do{ scanf("%lf",&MuK); if(MuK<800||MuK>900)printf("Il valore inserito e' fuori dall'intervallo considerato. Ripetere l'immissione\n"); }while(MuK<800||MuK>900); printf("Inserire il valore di sigma (compreso in [20,30] N/m)\n"); do{ scanf("%lf",&sigma); if(sigma<20||sigma>30)printf("Il valore inserito e' fuori dall'intervallo considerato. Ripetere l'immissione\n"); }while(sigma<20||sigma>30); esperimento(MuK,sigma,misure); // for(i=0;i3.)printf("Il valore inserito e' fuori dall'intervallo considerato. Ripetere l'immissione\n"); }while(fabs(s1)>3.); printf("Inserire il valore di s2 (compreso in [-3.0,3.0] e minore di s1)\n"); do{ scanf("%lf",&s2); if(fabs(s2)>3.)printf("Il valore inserito e' fuori dall'intervallo considerato. Ripetere l'immissione\n"); if(s2>s1)printf("Il valore inserito e' piu' grande di s1. Ripetere l'immissione\n"); }while(fabs(s2)>3.|| s2>s1); min=MuK+s2*sigma; max=MuK+s1*sigma; f=sommario(misure,min,max); printf("\n\nLa frazione di misure contenute nell'intervallo [MuK+s1*sigma,MuK+s2*sigma] e' pari a f=%lf\n\n\n",f); } void esperimento(double mu, double s, double measures[]){ double *pr1, *pr2, r1,r2; double x, k; int j; pr1=&r1; pr2=&r2; for(j=0;j+min && *(Data+i)<=max)Count++; } fclose(Write); Frac=(double)Count/N_MEASURES; return Frac; }