#include #include #include #include #define N_MAX 1000 #define EPSILON 0.1 void GetRes(double RanData[], double res[], int); main(){ int seed; seed=time(0); srand48(seed); int i,N; double RanData[N_MAX],res[2]; int imax,imin,Ncount; double min,max,diff; printf("\n\nQuesto programma genera N numeri casuali in [0,1] e ne calcola media e varianza.\n" "Il programma processa poi i dati, escludendo iterativamente il massimo ed il minimo valore \n" "e ripete i calcoli di cui sopra fino a che la differenza fra massimo e minimo non\n" "diventa minore di una soglia prefissata\n\n"); printf("Inserire il numero di dati che si vogliono generare\n"); do{ scanf("%d",&N); if(N<=0)printf("Il numero deve essere maggiore di zero\n"); if(N>N_MAX)printf("Il numero inserito e' troppo grande\n"); }while(N<=0 || N>N_MAX); for(i=0;i0) GetRes(RanData,res,N); printf("\nLa media del campione di %d dati e' m=%lf\n",Ncount,res[0]); printf("\nLa deviazione std del campione di %d dati e' s=%lf\n",Ncount,res[1]); min=1.; max=0.; imax=0; imin=0; for(i=0;i<=N;i++){ if(*(RanData+i)>max) { max=*(RanData+i); imax = i;} if((*(RanData+i)0 && diff>EPSILON); if(Ncount<=0)printf("\n Soglia non toccata!\n\n"); } void GetRes(double Data[],double res[], int NData){ int i; double mean=0., stddev=0.; for(i=0;i<=NData;i++){ mean+=*(Data+i); } mean=mean/(double)NData; for(i=0;i<=NData;i++){ stddev+=(*(Data+i)-mean)*(*(Data+i)-mean); } stddev=stddev/(double)(NData-1.); stddev=sqrt(stddev); *res=mean; *(res+1)=stddev; }