Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- #define SL 256
- #define FILE_INPUT "dati_in.bin"
- #define FILE_OUT "dati_out.bin"
- typedef FILE* pfile;
- typedef float* pfloat;
- int main(void)
- {
- int n_d,j;
- float somma,media;
- pfile p_in,p_out;
- pfloat p_d,p_1,p_2;
- if((p_in=fopen(FILE_INPUT, "rb"))==NULL) goto fopen_err;
- if(fread (&n_d,sizeof(int),1,p_in)!=1) goto fread_err;
- if ((p_d=(pfloat)malloc(sizeof(float)*(n_d+4)))==NULL) goto mem_err;
- *(p_d)=0.0; *(p_d+1)=0.0; *(p_d+n_d-1)=0.0; *(p_d+n_d-2)=0.0;
- if(fread(p_d+=2,sizeof(float),n_d,p_in)!=n_d) goto fread_err;
- if((p_out=fopen(FILE_OUT,"wb"))==NULL) goto fopen_err;
- fwrite(&n_d,sizeof(int),1,p_out); /*sto scrivendo anche nel file out il numero di dati che ho*/
- for(p_1=p_d,p_2=p_d+3;p_1<=p_d+n_d-5,p_2<=p_d+n_d-2;p_1++,p_2++)
- {
- for(j=0;j<=1;j++)
- {
- somma+=p_1[j]+p_2[j];
- }
- media=somma/4;
- if(media<(*(p_2-1)/2))
- printf("Il valore %.2f è stato sostituito da --> %.2f\n",*(p_2-1),media);
- *(p_2-1)=media;
- fwrite(p_d,sizeof(float),1,p_out);
- }
- fclose(p_in);
- fclose(p_out);
- return EXIT_SUCCESS;
- fopen_err: printf("C'è un errore nell'apertura del file"); return EXIT_FAILURE;
- mem_err: printf("Non c'e'abbastanza spazio in memoria"); return EXIT_FAILURE;
- fread_err: printf("Il numero acquisito è diverso dal numero inserito\n"); return EXIT_FAILURE;
- }
Advertisement
Add Comment
Please, Sign In to add comment