elelomb

compito5ott18

Jun 13th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. #define FILEIN  "dati_row.bin"
  6. #define FILEOUT "dati_clean.txt"
  7.  
  8. typedef struct _dato
  9.   {
  10.     int   index;
  11.     float misura;
  12.   } dato;
  13.  
  14. typedef dato* pdato;
  15. typedef FILE* pfile;
  16.  
  17. int main (void)
  18.   {
  19.     int   i,j,k,nm,nr,min;
  20.     float r, somma, somma_quadra, devstd, media;
  21.     pfile pf1, pf2;
  22.     pdato pd;
  23.     dato  temp;
  24.    
  25.     if((pf1=fopen(FILEIN,"rb"))==NULL)              goto fopen_err;
  26.     if((fread(&nm,sizeof(int),1,pf1))!=1)           goto fread_err;
  27.     if((fread(&nr,sizeof(int),1,pf1))!=1)           goto fread_err;
  28.     if((fread(&r,sizeof(float),1,pf1))!=1)          goto fread_err;
  29.     if((pd=(pdato)malloc(sizeof(dato)*nr))==NULL)   goto mem_err;
  30.     if((pf2=fopen(FILEOUT,"w"))==NULL)              goto fopen_err;
  31.     fprintf(pf2,"%d\n",nr);
  32.     fprintf(pf2,"%d\n",nm);
  33.      
  34.     for(k=0; k<nm; k++)
  35.       {
  36.         if((fread(pd,sizeof(dato),nr,pf1))!=nr)     goto fread_err;
  37.         for(i=0; i<nr; i++)
  38.           {
  39.              min = i;
  40.              for(j=i+1, somma=0.0, somma_quadra=0.0; j<nr; j++)
  41.                {
  42.                   if(pd[j].index<pd[i].index)
  43.                     {min = j;
  44.                     temp=pd[min];
  45.                     pd[min]=pd[i];
  46.                     pd[i]=temp;}
  47.                     somma+=pd[i].misura;
  48.                     somma_quadra=pd[i].misura*pd[i].misura;
  49.                }
  50.              media=(somma/nr);
  51.              devstd=sqrt(((somma_quadra)/nr)-((somma*somma)/((nr)*(nr))));
  52.             if ((devstd/media)<r)
  53.               fprintf(pf2,"%f\n",pd[i].misura);
  54.            
  55.           }
  56.       }
  57.      
  58.     return EXIT_SUCCESS;
  59.    
  60.     fopen_err: printf("C'e' un problema nell'apertura del file.\n");              return EXIT_FAILURE;
  61.     fread_err: printf("Il numero acquisito non coincide con quello inserito.\n"); return EXIT_FAILURE;
  62.     mem_err:   printf("Non c'e' abbastanza spazio in memoria.\n");                return EXIT_FAILURE;
  63.   }
Advertisement
Add Comment
Please, Sign In to add comment