Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #define FILEIN "dati_row.bin"
- #define FILEOUT "dati_clean.txt"
- typedef struct _dato
- {
- int index;
- float misura;
- } dato;
- typedef dato* pdato;
- typedef FILE* pfile;
- int main (void)
- {
- int i,j,k,nm,nr,min;
- float r, somma, somma_quadra, devstd, media;
- pfile pf1, pf2;
- pdato pd;
- dato temp;
- if((pf1=fopen(FILEIN,"rb"))==NULL) goto fopen_err;
- if((fread(&nm,sizeof(int),1,pf1))!=1) goto fread_err;
- if((fread(&nr,sizeof(int),1,pf1))!=1) goto fread_err;
- if((fread(&r,sizeof(float),1,pf1))!=1) goto fread_err;
- if((pd=(pdato)malloc(sizeof(dato)*nr))==NULL) goto mem_err;
- if((pf2=fopen(FILEOUT,"w"))==NULL) goto fopen_err;
- fprintf(pf2,"%d\n",nr);
- fprintf(pf2,"%d\n",nm);
- for(k=0; k<nm; k++)
- {
- if((fread(pd,sizeof(dato),nr,pf1))!=nr) goto fread_err;
- for(i=0; i<nr; i++)
- {
- min = i;
- for(j=i+1, somma=0.0, somma_quadra=0.0; j<nr; j++)
- {
- if(pd[j].index<pd[i].index)
- {min = j;
- temp=pd[min];
- pd[min]=pd[i];
- pd[i]=temp;}
- somma+=pd[i].misura;
- somma_quadra=pd[i].misura*pd[i].misura;
- }
- media=(somma/nr);
- devstd=sqrt(((somma_quadra)/nr)-((somma*somma)/((nr)*(nr))));
- if ((devstd/media)<r)
- fprintf(pf2,"%f\n",pd[i].misura);
- }
- }
- return EXIT_SUCCESS;
- fopen_err: printf("C'e' un problema nell'apertura del file.\n"); return EXIT_FAILURE;
- fread_err: printf("Il numero acquisito non coincide con quello inserito.\n"); return EXIT_FAILURE;
- mem_err: printf("Non c'e' abbastanza spazio in memoria.\n"); return EXIT_FAILURE;
- }
Advertisement
Add Comment
Please, Sign In to add comment