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

Subversion Repositories plasma

[/] [plasma/] [tags/] [V2_1/] [tools/] [count.c] - Blame information for rev 420

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

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

powered by: WebSVN 2.1.0

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