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

#define STR_LENGTH 256
#define FILE_MISURE "misure.bin"
#define FILE_SX     "left.txt"
#define FILE_DX     "right.txt"

typedef FILE* pfile;
typedef float* pfloat;

int main(void)
 {pfloat pf;
  pfile f,f2;
  char nomefile[STR_LENGTH];
  int n_m,i,nl=0,nr=0;
  float m=0,s=0,tmp,vl,vr;

  if ((f=fopen(strcpy(nomefile,FILE_MISURE),"rb"))==NULL) goto file_err; 
  if (fread(&n_m,sizeof(int),1,f)!=1)  goto file_err;
  if ((pf=(pfloat)malloc(sizeof(float)*n_m))==NULL) goto mem_err;
  if (fread(pf,sizeof(float),n_m,f)!=n_m) goto file_err;
  fclose(f);

  for(i=0;i<n_m;i++) {m+=tmp=pf[i]; s+=tmp*tmp;} 
  m/=n_m;s=sqrt(s/n_m-m*m);vl=m-s;vr=m+s;
  for(i=0;i<n_m;i++) 
   {if ((tmp=pf[i])<=vl) nl++;
    if (tmp>=vr)         nr++;
   }
  
  if ((f= fopen(strcpy(nomefile,FILE_SX),"w"))==NULL) goto file_err; fprintf(f, "%d\n",nl);
  if ((f2=fopen(strcpy(nomefile,FILE_DX),"w"))==NULL) goto file_err; fprintf(f2,"%d\n",nr);
  for(i=0;i<n_m;i++) 
   {if ((tmp=pf[i])<=vl) fprintf(f, "%.2f\n",tmp);
    if (tmp>=vr)         fprintf(f2,"%.2f\n",tmp);
   } 
  fclose(f); fclose(f2);
  return EXIT_SUCCESS;

  file_err: printf("\nERRORE: problemi col file \"%s\"\n",nomefile); return EXIT_FAILURE;
  mem_err:  printf("\nERRORE: Mememoria insufficiente\n"); return EXIT_FAILURE;
 }
