Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define FILE1 "./dati_in.bin"
- #define FILE2 "./dati_out.bin"
- typedef FILE* pfile;
- typedef float* pfloat;
- int main(void)
- {
- int n_d,i;
- float media_doppia=0.0,media=0.0,vmis,tmp,somma=0.0;
- pfloat pmis;
- pfile pf_in,pf_out;
- /*apro il file dati_in.bin*/
- if((pf_in=fopen(FILE1,"rb"))==NULL) goto file_err1;
- if((fread(&n_d,sizeof(int),1,pf_in))!=1) goto fread_err;
- if((pmis=(pfloat)malloc(sizeof(float)*(n_d+4)))==NULL) goto mem_err;
- pmis[0]=pmis[1]=pmis[n_d]=pmis[n_d+1]=0.0;
- if((fread(pmis+2,sizeof(float),n_d,pf_in))!=n_d) goto fread_err; /*errore grave nel fread va l'address*/
- fclose(pf_in);
- /*calcolo la somma dei 4 valori adiacenti a ciascuna misura*/
- for(i=0;i<(n_d);i++)
- {
- somma=pmis[i]+pmis[i+1]+pmis[i+3]+pmis[i+4];
- media_doppia=somma/2;
- tmp=vmis=pmis[i+2];
- vmis=(vmis>media_doppia)? (media=(media_doppia/2)):vmis;
- if(vmis==media) printf("%d--> il valore %.2f diventa %.2f\n",i,tmp,vmis);
- }
- if((pf_out=fopen(FILE2,"wb"))==NULL) goto file_err2;
- fwrite(pmis+2,sizeof(float),n_d,pf_out);
- fclose(pf_out); free(pmis);
- return EXIT_SUCCESS;
- file_err1:
- printf("errore nell'apertura del file dati_in.bin\n");
- return EXIT_FAILURE;
- fread_err:
- printf("errore nella lettura dei dati\n");
- return EXIT_FAILURE;
- mem_err:
- printf("errore di memoria\n");
- return EXIT_FAILURE;
- file_err2:
- printf("errore nell'apertura del file dati_out.bin\n");
- return EXIT_FAILURE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement