#include #include #include char t1[1024], t2[1024], *curr, *next, *ptr; char out[10]; char *wnum[] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; char *wteen[] = { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; char *wdec[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; int i, neg, num, cele; int main() { for(;;) { curr = t1; next = t2; if (scanf("%s", curr) < 0) break; if (!isalnum(curr[0])) break; out[0] = '\0'; num = cele = 0; while (curr && isalnum(curr[0])) { char c; c = getchar(); /* printf("%c\n", c); */ if ((c == '\n') || c == EOF) next = NULL; else scanf("%s", next); if (!strcmp(curr, "negative")) printf("-"); else { for (i=0; i<=9; i++) if (!strcmp(curr, wnum[i])) { num += i; /*printf("num: %d\n", num); */break; } if (i > 9) for (i=0; i<=9; i++) if (!strcmp(curr, wdec[i])) { num += 10*i; /*printf("dec: %d\n", num); */break; } if (i > 9) for (i=0; i<=9; i++) if (!strcmp(curr, wteen[i])) { num += 10+i; /*printf("teen: %d\n", num); */break; } if (i > 9) { /*printf("x: %s\n" , curr); */if (!strcmp(curr, "hundred")) num *= 100; else if (!strcmp(curr, "thousand")) { cele += num * 1000; num = 0; } else if (!strcmp(curr, "million")) { cele += num * 1000000; num = 0; } } } ptr = next; next = curr; curr = ptr; } printf("%d\n", cele + num); } return 0; }