#include #include #include char *p[] = {"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"}; int vysl=0,i,cislo=0,znamenko=1; char slovo[10]; char *radek; int d_radku; int d_slova; void preved(char *slovo) { if (!strcmp(slovo,p[29])) { vysl=vysl+cislo*100;cislo=0; return;} if (!strcmp(slovo,p[30])) { if(vysl>99 && vysl<999) vysl=vysl*1000+cislo*1000; else vysl=vysl+cislo*1000;cislo=0; return;} if (!strcmp(slovo,p[31])) { vysl=1000000*cislo; cislo=0; return;} for(i=21;i<=28;i++) { if(!strcmp(slovo,p[i])) {cislo=cislo+(i-19)*10;return;} } for(i=1;i<=20;i++) { if (!strcmp(slovo,p[i])) {cislo=cislo+i-1;return;} } return; } int main(void) { radek = (char *) malloc(255 * sizeof(char)); while( fgets(radek, 255, stdin) != NULL) { d_radku = strlen(radek); /*printf("%d", d_radku); puts(radek);*/ while (d_slova < d_radku-3) { sscanf(radek+d_slova, "%s", slovo); d_slova += strlen(slovo)+1; /*printf("%d\n", d_slova);*/ /* printf("%s\n",slovo);*/ if (!strcmp(slovo,p[0])){ znamenko*=-1; } preved(slovo); /* scanf("%s",slovo); printf("%d ",cislo);*/ } vysl=vysl+cislo; printf("%d\n",vysl*znamenko); znamenko=1; cislo=0; vysl=0; d_slova=0; d_radku=0; } return 0; }