#include #include char *w[] = { "negative","zero","one","two","three","four","five","six","seven", "eight","nine","ten","eleven","twelve","thirteen","fourteen", "fifteen","sixteen","seventeen","eighteen","nineteen","twenty", "thirty","forty","fifty","sixty","seventy","eighty","ninety", "hundred","thousand","million",NULL }; int wval[] = { -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, 30,40,50,60,70,80,90, 100,1000,1000000 }; char word[50]; int w0; int tot; int neg; int val; void gword(void) { int c; int l; l=0; while(1) { c=fgetc(stdin); /* printf("w char '%c'\n",c);*/ if(c<'a' || c>'z') break; word[l++]=c; } /* printf("end word\n");*/ word[l]=0; ungetc(c,stdin); } int aw(void) { int i; i=0; while(w[i]) { if(!strcmp(w[i],word)) { return wval[i]; } i++; } return -2; } void pword(void) { int v; v=aw(); switch(v) { case -1: neg=1; break; case -2: if(w0) exit(0); else { tline(); exit(0); } break; case 100: val=val*100; break; case 1000: case 1000000: tot += val*v; val=0; break; default: val+=v; break; } } void tline(void) { tot += val; if(neg) putchar('-'); printf("%d\n",tot); tot=0; val=0; neg=0; w0=1; } int main(void) { int c; val = 0; tot=0; neg=0;w0=1; c=0; while(c!=EOF) { gword();pword();w0=0; c=fgetc(stdin); /* printf("c='%c'\n",c);*/ if(c!=' ') tline(); } return 0; }