Aurox_

compitoIntervallo.c

Dec 11th, 2023
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <float.h>
  4. #include <math.h>
  5.  
  6. #define STRLEN    1024
  7. #define FILEDIR   "./filetxt/"
  8. #define FILEDIR_BIN "./filebin/"
  9. #define FILENAME  "ciccio"
  10. #define NUM_IN    2
  11. #define NUM_OUT   3
  12. #define PERC      80.0
  13.  
  14. #define MIN(A,B) (A<B)?A:B
  15. #define MAX(A,B) (A<B)?B:A
  16.  
  17. typedef int*      pint;
  18. typedef float*    pfloat;
  19. typedef FILE*     pfile;
  20. typedef FILE**    ppfile;
  21.  
  22. int main(void)
  23.   {
  24.     ppfile ppfr,ppfw;
  25.     unsigned nval,i,prova;
  26.     char dati[STRLEN],s[STRLEN];
  27.     float temp,sum,sumq,var,min1,max1,min2,max2,c,l;
  28.  
  29.     if ((ppfr=(ppfile)malloc(sizeof(pfile)*NUM_IN))==NULL) goto err_mem;
  30.     if ((ppfw=(ppfile)malloc(sizeof(pfile)*NUM_OUT))==NULL) goto err_mem;
  31.  
  32.     for (i=nval=prova=0;i<NUM_IN;i++) /*apre file in lettura e legge il primo numero. lo somma a n_val che indica il numero totale di dati*/
  33.       {
  34.         sprintf(dati,"%s%s.%d.bin",FILEDIR_BIN,FILENAME,i);
  35.         if ((ppfr[i]=fopen(dati,"rb"))==NULL) goto err_file;
  36.         fread(&prova,sizeof(unsigned),1,ppfr[i]);
  37.         nval+=prova;
  38.  
  39.         printf("File %u aperto in lettura\nval=%u, prova=%u\n",i,nval,prova);
  40.       }
  41.     for (i=0;i<NUM_OUT;i++)
  42.       {
  43.         sprintf(dati,"%s%s.%d.txt",FILEDIR,FILENAME,i);
  44.         if ((ppfw[i]=fopen(dati,"w"))==NULL) goto err_file;
  45.         printf("File %u aperto in scrittura\n",i);
  46.  
  47.       }
  48.     printf("Misure:\n");
  49.     for (i=0,sum=0,sumq=0,temp=0,min1=FLT_MAX,max1=FLT_MIN;i<nval;i++)
  50.       {
  51.         fread(&temp,sizeof(float),1,ppfr[i%NUM_IN]);
  52.         sum+=temp;
  53.         sumq+=(temp*temp);
  54.         min1=MIN(temp,min1);
  55.         max1=MAX(temp,max1);
  56.         fprintf(ppfw[i%NUM_OUT],"%.1f",temp);
  57.         printf("\t%u) %.1f debug, sum=%f, sumq=%f\n",i,temp,sum,sumq);
  58.       }
  59.  
  60.       sum/=nval;
  61.       var=(sumq/nval)-(sum*sum);
  62.       c=(max1+min1)/2;
  63.       printf("c %f\n",c);
  64.       l=(max1-c)*(PERC/100);
  65.       max2=c+l;
  66.       min2=c-l;
  67.  
  68.       printf("Media: %.5f\nDevst: %.5f\nIntervallo 1 [%.2f,%.2f]\nIntervallo ridotto [%.2f,%.2f]\n",sum,sqrt(var),min1,max1,min2,max2);
  69.  
  70.     return 0;
  71.     err_mem:
  72.         printf("ERRORE: Memoria insufficiente.\n");
  73.         return 1;
  74.     err_file:
  75.         printf("ERRORE: File non trovato\n");
  76.         return 1;
  77.  
  78.   }
Advertisement
Add Comment
Please, Sign In to add comment