OpenCores
URL https://opencores.org/ocsvn/mlite/mlite/trunk

Subversion Repositories mlite

[/] [mlite/] [trunk/] [tools/] [count.c] - Blame information for rev 135

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 rhoads
/*count.c*/
2 135 rhoads
void putchar (int);
3
int puts (const char *);
4 35 rhoads
 
5 135 rhoads
char *name[] = {
6
   "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
7
   "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
8
   "sixteen", "seventeen", "eighteen", "nineteen",
9
   "", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy",
10
   "eighty", "ninety"
11 35 rhoads
};
12
 
13 42 rhoads
#ifndef MLITE
14 35 rhoads
int puts(const char *ptr)
15
{
16 135 rhoads
   while(*ptr)
17
   {
18 35 rhoads
      putchar(*ptr++);
19
   }
20
   return 0;
21
}
22
#endif
23
 
24
#if 0
25
char *xtoa(unsigned long num)
26
{
27
   static char buf[12];
28 135 rhoads
   int i, digit;
29
   buf[8] = 0;
30
   for (i = 7; i >= 0; --i)
31
   {
32
      digit = num & 0xf;
33
      buf[i] = digit + (digit < 10 ? '0' : 'A' - 10);
34
      num >>= 4;
35 35 rhoads
   }
36
   return buf;
37
}
38
#endif
39
 
40 54 rhoads
char *itoa(unsigned long num)
41
{
42
   static char buf[12];
43
   int i;
44 135 rhoads
   buf[10] = 0;
45
   for (i = 9; i >= 0; --i)
46
   {
47
      buf[i] = (char)((num % 10) + '0');
48
      num /= 10;
49 54 rhoads
   }
50
   return buf;
51
}
52
 
53 35 rhoads
void number_text(unsigned long number)
54
{
55
   int digit;
56 135 rhoads
   puts(itoa (number));
57 35 rhoads
   puts(": ");
58 135 rhoads
   if(number >= 1000000000)
59
   {
60
      digit = number / 1000000000;
61 35 rhoads
      puts(name[digit]);
62
      puts(" billion ");
63 135 rhoads
      number %= 1000000000;
64 35 rhoads
   }
65 135 rhoads
   if(number >= 100000000)
66
   {
67
      digit = number / 100000000;
68 35 rhoads
      puts(name[digit]);
69
      puts(" hundred ");
70 135 rhoads
      number %= 100000000;
71
      if(number < 1000000)
72
      {
73 35 rhoads
         puts("million ");
74
      }
75
   }
76 135 rhoads
   if(number >= 20000000)
77
   {
78
      digit = number / 10000000;
79
      puts(name[digit + 20]);
80 35 rhoads
      putchar(' ');
81 135 rhoads
      number %= 10000000;
82
      if(number < 1000000)
83
      {
84 35 rhoads
         puts("million ");
85
      }
86
   }
87 135 rhoads
   if(number >= 1000000)
88
   {
89
      digit = number / 1000000;
90 35 rhoads
      puts(name[digit]);
91
      puts(" million ");
92 135 rhoads
      number %= 1000000;
93 35 rhoads
   }
94 135 rhoads
   if(number >= 100000)
95
   {
96
      digit = number / 100000;
97 35 rhoads
      puts(name[digit]);
98
      puts(" hundred ");
99 135 rhoads
      number %= 100000;
100
      if(number < 1000)
101
      {
102 35 rhoads
         puts("thousand ");
103
      }
104
   }
105 135 rhoads
   if(number >= 20000)
106
   {
107
      digit = number / 10000;
108
      puts(name[digit + 20]);
109 35 rhoads
      putchar(' ');
110 135 rhoads
      number %= 10000;
111
      if(number < 1000)
112
      {
113 35 rhoads
         puts("thousand ");
114
      }
115
   }
116 135 rhoads
   if(number >= 1000)
117
   {
118
      digit = number / 1000;
119 35 rhoads
      puts(name[digit]);
120
      puts(" thousand ");
121 135 rhoads
      number %= 1000;
122 35 rhoads
   }
123 135 rhoads
   if(number >= 100)
124
   {
125
      digit = number / 100;
126 35 rhoads
      puts(name[digit]);
127
      puts(" hundred ");
128 135 rhoads
      number %= 100;
129 35 rhoads
   }
130 135 rhoads
   if(number >= 20)
131
   {
132
      digit = number / 10;
133
      puts(name[digit + 20]);
134 35 rhoads
      putchar(' ');
135 135 rhoads
      number %= 10;
136 35 rhoads
   }
137
   puts(name[number]);
138 135 rhoads
   putchar ('\r');
139
   putchar ('\n');
140 35 rhoads
}
141
 
142
void main()
143
{
144 135 rhoads
   unsigned long number, i;
145 54 rhoads
   puts("Mult by 3\r\n");
146 135 rhoads
   number = 3;
147
   for(i = 0;; ++i)
148
   {
149 35 rhoads
      number_text(number);
150 135 rhoads
      number *= 3;
151 35 rhoads
   }
152
}
153
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.