Annotation of 42BSD/games/number.c, revision 1.1

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

unix.superglobalmegacorp.com

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