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

#define SL         1024
#define NF         "misure.txt"
#define EC1        'F'
#define EC2        'f'

typedef FILE* pfile;
typedef char* pchar;

int is_not_a_number(char c) {return ((c<'0')||(c>'9'));}

int main(void)
 {unsigned nm,w,fine,nv,ni,nx;
  pfile    f;
  float    x,y,xm,ym,d;
  char     s[SL],ef[]="apertura file",ex[]="x non trovata",ey[]="y non trovata",ec[]="char illegale";
  pchar    pe;
  
  if ((f=fopen(NF,"r"))==NULL) {pe=ef; goto err;}
  
  for(nm=nv=nx=ni=0,xm=ym=d=0.0;;)
   {fscanf(f,"%s",s);
    if (is_not_a_number(s[0])) 
     {if ((s[0]!=EC1)&&(s[0]!=EC2)) {pe=ex; goto err;}
      else break;
     }
    x=atof(s);
    fscanf(f,"%s",s);
    if (is_not_a_number(s[0])) {pe=ey; goto err;}
    y=atof(s);
    nm++;
    for(w=0,fine=1;fine;)
     {fscanf(f,"%s",s);
      switch(s[0])
       {case 'v':
        case 'V': nv++; w+=5;   break;
        case 'x':
        case 'X': nx++; w+=10;  break;
        case 'i':
        case 'I': ni++; w+=1;   break;
        case 'e':
        case 'E': fine=0;       break;
        default : pe=ec;        goto err;
       }
     }
    printf("Misura n.%u --> (%.2f,%.2f) w=%3u\n",nm,x,y,w);
    d+=w; xm+=x*w; ym+=y*w;
   }
  
  fclose(f);
  printf("ni=%u, nv=%u e nx=%u\n",ni,nv,nx);
  printf("Baricentro ponderato --> (%.2f,%.2f)\n",xm/=d,ym/=d);
  return EXIT_SUCCESS;
  
  err: printf("Errore di %s\n",pe); return EXIT_FAILURE;
   
 }
