/* Questo programma crea e stampa su file un prototipo di istogramma. I dati sono generati estraendo numeri casuali uniformemente distribuiti in [0,1]. */ #include #include #include #define MAX_NSAMPLE 1000000 #define MAX_NBINS 100 int GetInput(double data[], int); void MakeHistogram(double data[], int bin[], double, double, int, int); void WriteHistogram(int bin[], double, double, int); main(){ int NData,k; /* NData e' il numero di eventi nel campione */ int NBins, NInBin[MAX_NBINS]={0}; /* NInBin contera' il numero di eventi (elementi del campione) all'interno di ciascun bin dell'istogramma */ double min,max; /* Estremi dell'intervallo entro cui si vuol costruire l'istogramma */ double DataSet[MAX_NSAMPLE]; /* Vettore che contiene gli elementi del campione */ int seed; seed=time(0); srand48(seed); NData=GetInput(DataSet); printf("Valore minimo?\n"); scanf("%lf",&min); printf("\n Valore massimo?\n"); scanf("%lf",&max); do{ printf("\n Inserire il numero di intervalli \n"); scanf("%d",&NBins); }while(NBins<=0 || NBins > MAX_NBINS); MakeHistogram(DataSet,NInBin,min,max,NBins,NData); WriteHistogram(NInBin,min,max,NBins); } /* Questa e' la funzione che determina (chiedendolo) il numero, N, dei dati di cui faremo l'istogramma e li genera secondo una qualche ricetta */ int GetInput(double DataGet[]){ int N, k; do{ printf("Inserire il numero totale di dati\n"); scanf("%d",&N); }while(N<0 || N>MAX_NSAMPLE); /* In questo caso i dati sono N numeri uniformemente distribuiti fra zero e uno con i quali viene popolato l'array DataSet */ for (k=0; k0 se tutti i dati sono "a destra" di min. Che succede se cosi' non e'?)*/ if(j