Advertisement
arca29

16/09/17

May 19th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define FILE1 "./dati_in.bin"
  5. #define FILE2 "./dati_out.bin"
  6.  
  7. typedef FILE* pfile;
  8. typedef float* pfloat;
  9.  
  10. int main(void)
  11. {
  12. int n_d,i;
  13. float media_doppia=0.0,media=0.0,vmis,tmp,somma=0.0;
  14. pfloat pmis;
  15. pfile pf_in,pf_out;
  16.  
  17. /*apro il file dati_in.bin*/
  18. if((pf_in=fopen(FILE1,"rb"))==NULL) goto file_err1;
  19. if((fread(&n_d,sizeof(int),1,pf_in))!=1) goto fread_err;
  20. if((pmis=(pfloat)malloc(sizeof(float)*(n_d+4)))==NULL) goto mem_err;
  21. pmis[0]=pmis[1]=pmis[n_d]=pmis[n_d+1]=0.0;
  22. if((fread(pmis+2,sizeof(float),n_d,pf_in))!=n_d) goto fread_err; /*errore grave nel fread va l'address*/
  23. fclose(pf_in);
  24. /*calcolo la somma dei 4 valori adiacenti a ciascuna misura*/
  25. for(i=0;i<(n_d);i++)
  26. {
  27. somma=pmis[i]+pmis[i+1]+pmis[i+3]+pmis[i+4];
  28. media_doppia=somma/2;
  29. tmp=vmis=pmis[i+2];
  30. vmis=(vmis>media_doppia)? (media=(media_doppia/2)):vmis;
  31. if(vmis==media) printf("%d--> il valore %.2f diventa %.2f\n",i,tmp,vmis);
  32. }
  33. if((pf_out=fopen(FILE2,"wb"))==NULL) goto file_err2;
  34. fwrite(pmis+2,sizeof(float),n_d,pf_out);
  35. fclose(pf_out); free(pmis);
  36. return EXIT_SUCCESS;
  37. file_err1:
  38. printf("errore nell'apertura del file dati_in.bin\n");
  39. return EXIT_FAILURE;
  40. fread_err:
  41. printf("errore nella lettura dei dati\n");
  42. return EXIT_FAILURE;
  43. mem_err:
  44. printf("errore di memoria\n");
  45. return EXIT_FAILURE;
  46. file_err2:
  47. printf("errore nell'apertura del file dati_out.bin\n");
  48. return EXIT_FAILURE;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement