|
|
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.