Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <float.h>
- #define FILE_INPUT "dati.bin"
- typedef struct _dato
- {
- float alpha;
- float beta;
- float misura;
- }dato;
- typedef FILE* pfile;
- typedef float* pfloat;
- typedef dato* pdato;
- /*funzione che calcola il minimo di un array di float (dagli il puntatore e la dimensione dell'array*/
- float min_float (pfloat pv, int dim)
- {
- float min=FLT_MAX,v;
- int i;
- for (i=0;i<dim;i++)
- {
- v=pv[i];
- min=min>v?v:min;
- }
- return min;
- }
- /*Funzione che calcola il max*/
- float max_float (pfloat pv, int dim)
- {
- float max=FLT_MIN,v;
- int i;
- for (i=0;i<dim;i++)
- {
- v=pv[i];
- max=max<v?v:max;
- }
- return max;
- }
- int main (void)
- {
- int n_dati,i,cont=0;
- float min,max,frazione;
- pdato pd;
- pfloat pmisure;
- pfile pf;
- if ((pf=fopen(FILE_INPUT,"rb"))==NULL) goto fopen_err;
- if((fread(&n_dati,sizeof(int),1,pf))!=1) goto read_err;
- if((pd=(pdato)malloc(sizeof(dato)*n_dati))==NULL) goto mem_err;
- if(fread(pd, sizeof(dato),n_dati,pf)!=n_dati) goto read_err;
- fclose (pf);
- if((pmisure=(pfloat)malloc(sizeof(float)*n_dati))==NULL) goto mem_err;
- for (i=0;i<n_dati;i++)
- pmisure[i]=pd[i].alpha*pd[i].misura+pd[i].beta;
- free (pd);
- min=min_float(pmisure,n_dati);
- max=max_float(pmisure,n_dati);
- printf("min=%.2f\nmax=%.2f\n",min,max);
- frazione=0.05*(max-min); /*lo 0.05% dell'ampiezza*/
- min=min+frazione;
- max=max-frazione;
- printf("Ti stampero' i valori del file compresi nel sottointervallo pari al 90%% dell'intervallo di partenza, cioè nell'intervallo ]%.2f,%.2f[\n",min,max);
- for(i=0;i<n_dati;i++)
- {
- frazione=pmisure[i];
- if((frazione>min)&&(frazione<max))
- {
- cont++;
- printf("v[%d]=%.2f\n",cont,frazione);
- }
- }
- free (pmisure);
- printf("Dunque il numero di valori compresi fra ]%.2f,%.2f[ e' pari a %d\n",min,max,cont);
- return EXIT_SUCCESS;
- fopen_err:
- printf("Si e' verificato un problema nell'apertura del file\n");
- return EXIT_FAILURE;
- read_err:
- printf("Si e' verificato un problema nella lettura del file\n");
- return EXIT_FAILURE;
- mem_err:
- printf("Problema di memoria\n");
- return EXIT_FAILURE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement