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

#define FILE_BIN     "dati.bin"
#define FILE_TXT_IN  "dati_in.txt"
#define FILE_TXT_OUT "dati_out.txt"

typedef FILE*  pfile;
typedef float* pfloat;
typedef int*   pint;
typedef char*  pchar;

int main(void)
 {pfile  f,f1;
  int    n,i,j;
  float  v,m=0.0,s=0.0;
  pfloat pv,pr;

  if ((f=fopen(FILE_BIN,"rb"))==NULL) goto file_err;
  fread(&n,sizeof(int),1,f);
  if ((pv=(pfloat)malloc(sizeof(float)*n))==NULL) goto mem_err;
  fread(pv,sizeof(float),n,f);
  fclose(f);

  if ((pr=(pfloat)malloc(sizeof(float)*(n/=2)))==NULL) goto mem_err;

  for(i=0,j=2*n-1;i<j;i++,j--)
   {s+=v=pv[i]*pv[i]+pv[j]*pv[j];
    m+=pr[i]=sqrt(v);
   }
  m/=n;
  s=sqrt(s/n-m*m);
  printf("m=%.2f s=%.2f\n",m,s);

  v=m+s;
  if ((f= fopen(FILE_TXT_IN, "w"))==NULL) goto file_err;
  if ((f1=fopen(FILE_TXT_OUT,"w"))==NULL) goto file_err;

  for(i=0,j=2*n-1;i<j;i++,j--)
   fprintf((pr[i]<v)?f:f1,"%d: (%.2f,%.2f)\n",i+1,pv[i],pv[j]);

  free(pv); free(pr); fclose(f); fclose(f1);
  return EXIT_SUCCESS;    
   
  file_err: printf("Errore di apertura file\n");  return EXIT_FAILURE;
  mem_err:  printf("Memoria insufficiente\n");    return EXIT_FAILURE;
 }
