|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.