Annotation of 3BSD/games/number.c, revision 1.1.1.1

1.1       root        1: int    flag;
                      2: int max = 21;
                      3: char   *card[] =
                      4: {
                      5:        "hundred",
                      6:        "thousand",
                      7:        "million",
                      8:        "billion",
                      9:        "trillion",
                     10:        "quadrillion",
                     11:        "quintillion",
                     12:        "sextillion",
                     13:        "septillion",
                     14:        "octillion",
                     15:        "nonillion",
                     16:        "decillion",
                     17:        "undecillion",
                     18:        "duodecillion",
                     19:        "tredecillion",
                     20:        "quattuordecillion",
                     21:        "quindecillion",
                     22:        "sexdecillion",
                     23:        "septendecillion",
                     24:        "octodecillion",
                     25:        "novemdecillion",
                     26:        "vigintillion"
                     27: };
                     28: char *unit[] = {
                     29:        "zero",
                     30:        "one",
                     31:        "two",
                     32:        "three",
                     33:        "four",
                     34:        "five",
                     35:        "six",
                     36:        "seven",
                     37:        "eight",
                     38:        "nine"
                     39: };
                     40: char *teen[] = {
                     41:        "ten",
                     42:        "eleven",
                     43:        "twelve",
                     44:        "thirteen",
                     45:        "fourteen",
                     46:        "fifteen",
                     47:        "sixteen",
                     48:        "seventeen",
                     49:        "eighteen",
                     50:        "nineteen"
                     51: };
                     52: char *decade[] = {
                     53:        "zero",
                     54:        "ten",
                     55:        "twenty",
                     56:        "thirty",
                     57:        "forty",
                     58:        "fifty",
                     59:        "sixty",
                     60:        "seventy",
                     61:        "eighty",
                     62:        "ninety"
                     63: };
                     64: char   line[100];
                     65: main()
                     66: {
                     67:        register c, i, fraction;
                     68:        int r;
                     69: 
                     70: 
                     71:        fraction = 0;
                     72:        while(c = getchar()) {
                     73:                if(!digit(c))  {
                     74:                        fraction = (c == '.');
                     75:                        putchar(c);
                     76:                        continue;
                     77:                }
                     78:                if(fraction) {
                     79:                        while(digit(c)) {
                     80:                                putchar(' ');
                     81:                                putchar(c);
                     82:                                if(!(c=getchar()))
                     83:                                        exit(1);
                     84:                        }
                     85:                        putchar(' ');
                     86:                        goto out;
                     87:                }
                     88: 
                     89:                putchar(' ');
                     90:                i = 0;
                     91:                line[i++] = '0';
                     92:                line[i++] = '0';
                     93:                while(c == '0')
                     94:                        if(!(c=getchar()))
                     95:                                exit(1);
                     96:                while(digit(c)) {
                     97:                        if(i < 98)
                     98:                                line[i++] = c;
                     99:                        if(!(c=getchar()))
                    100:                                exit(1);
                    101:                }
                    102:                line[i] = 0;
                    103:                r = i/3;
                    104:                if(r == 0) {
                    105:                        print("zero");
                    106:                        goto out;
                    107:                }
                    108:                conv(line+i-3*r, r);
                    109: 
                    110: out:
                    111:                fraction = (c == '.');
                    112:                nline();
                    113:                printf("...\n");
                    114:                if(c != '\n')
                    115:                        putchar(c);
                    116:        }
                    117: }
                    118: 
                    119: conv(p, c)
                    120: char *p;
                    121: {
                    122: 
                    123:        if(c > max) {
                    124:                conv(p, c-max);
                    125:                print(card[max]);
                    126:                nline();
                    127:                p += (c-max)*3;
                    128:                c = max;
                    129:        }
                    130:        while(c > 1) {
                    131:                c--;
                    132:                conv(p, 1);
                    133:                cprint(card[c]);
                    134:                nline();
                    135:                p += 3;
                    136:        }
                    137:        ones(p[0]);
                    138:        cprint(card[0]);
                    139:        tens(p);
                    140:        ones(p[2]);
                    141: }
                    142: 
                    143: ones(d)
                    144: {
                    145:        if(d=='0')
                    146:                return;
                    147:        print(unit[d-'0']);
                    148: }
                    149: 
                    150: tens(p)
                    151: char *p;
                    152: {
                    153: 
                    154:        switch(p[1]) {
                    155: 
                    156:        case '0':
                    157:                return;
                    158: 
                    159:        case '1':
                    160:                print(teen[p[2]-'0']);
                    161:                p[2] = '0';
                    162:                return;
                    163:        }
                    164: 
                    165:        print(decade[p[1]-'0']);
                    166: }
                    167: 
                    168: 
                    169: digit(c)
                    170: {
                    171: 
                    172:        if(c < '0' || c > '9')
                    173:                return(0);
                    174:        return(1);
                    175: }
                    176: 
                    177: nline()
                    178: {
                    179: 
                    180:        if(flag)
                    181:                printf(".\n");
                    182:        flag = 0;
                    183: }
                    184: 
                    185: cprint(s)
                    186: {
                    187: 
                    188:        if(flag)
                    189:                print(s);
                    190: }
                    191: 
                    192: print(s)
                    193: {
                    194: 
                    195:        if(flag)
                    196:                printf(" ");
                    197:        printf(s);
                    198:        flag = 1;
                    199: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.