Hello i have this program and i need some help to fix it,
i think the problem is on command " puts(name[digit + 20 ]) "
it is working fine until 109 but after this something is wrong
this the program:
/*count.c*/
int putchar(int value);
int puts(const char *string);
char *name[] = {
"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen",
"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy",
"eighty", "ninety", "one hundred", "one thousand" ,
};
char *itoa10(unsigned long num)
{
static char buf[12];
int i;
buf[10] = 0;
for (i = 9; i >= 0; --i)
{
buf[i] = (char)((num % 10) + '0');
num /= 10;
}
return buf;
}
void number_text(unsigned long number)
{
int digit;
puts(itoa10(number));
puts(": ");
if(number >= 20)
{
digit = number / 10;
puts(name[digit + 20 ]);
putchar(' ');
number %= 10;
}
puts(name[number]);
putchar ('\r');
putchar ('\n');
}
int main()
{
unsigned long number=0, i=0;
int am;
number = 80;
am=1143;
for(i = 80; i <= am ; i++)
{
number_text(number);
number ++;
// number *= 3;
//++number;
}
system ("pause");
}
any help will be good! thanks
