#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define STRLEN 1024

typedef FILE*  pfile;
typedef pfile* ppfile;
typedef float* pfloat;

int main(void)
 {char s[STRLEN],nbf[STRLEN];
  unsigned n_f,n_m,i_m,i_f;
  pfloat   pm;
  ppfile   ppf;
  pfile    pfo;
  float    m,sig,soglia,v;
  
  printf("Nome base file: ");
  scanf("%s",nbf);
  sprintf(s,"%s.out",nbf);
  if ((pfo=fopen(s,"wb"))==NULL) goto file_err;
  printf("Num files in: ");
  scanf("%s",s);
  n_f=atoi(s);
  if ((pm=(pfloat)malloc(sizeof(float)*n_f))==NULL) goto mem_err;
  if ((ppf=(ppfile)malloc(sizeof(pfile)*n_f))==NULL) goto mem_err;

  printf("Soglia: ");
  scanf("%s",s);
  soglia=atof(s);

  printf("Num misure: ");
  scanf("%s",s);
  n_m=atoi(s);

  for(i_f=0;i_f<n_f;i_f++)
   {sprintf(s,"%s.%u.in",nbf,i_f);
    if ((ppf[i_f]=fopen(s,"r"))==NULL) goto file_err;
   }
  
  for (i_m=0;i_m<n_m;i_m++)
   {printf("Letti: ");
    for(i_f=0,m=sig=0.0;i_f<n_f;i_f++)
     {fscanf(ppf[i_f],"%s",s);
      m+=v=pm[i_f]=atof(s); sig+=v*v; 
      printf("%.2f ",v);
     }
    m/=n_f; sig=sqrt(sig/n_f-m*m);
    printf("- r=%.2f - ",v=sig/m);
    if (v<soglia) printf("Scartati\n");
    else                 
     {printf("Salvati\n");
      fwrite(pm,sizeof(float),n_f,pfo);
     }
   }
  
  fclose(pfo); for(i_f=0;i_f<n_f;i_f++) fclose(ppf[i_f]);
  return EXIT_SUCCESS;
  
  file_err: printf("Problema coi files!\n");     return EXIT_FAILURE;
  mem_err:  printf("Problema colla memoria!\n"); return EXIT_FAILURE;
  
  
 }
