home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
messroms.de
/
2007-01-13_www.messroms.de.zip
/
CGENIE
/
TOOLS
/
DZ80.ZIP
/
frac2.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-12-07
|
1KB
|
70 lines
#include <stdlib.h>
#include <string.h>
static char mul5[128+1] = "";
static char rstr[128+1] = "";
char *str_rev(char * src)
{
char * dst = rstr + strlen(src);
*dst = '\0';
while (*src)
*--dst = *src++;
return dst;
}
void str_add(char * dst, char * src)
{
int i;
int j;
for (i = 0; src[i]; i++)
{
dst[i] += src[i] - '0';
if (dst[i] > '9')
{
dst[i] -= 10;
for (j = i + 1; dst[j]; j++)
{
dst[j] += 1;
if (dst[j] <= '9')
break;
dst[j] -= 10;
}
}
}
}
char *str_div2(char * num)
{
char * dst;
int digits = strlen(num);
memset(mul5, '0', sizeof(mul5) - 1);
str_add(mul5, num);
str_add(mul5, num);
str_add(mul5, num);
str_add(mul5, num);
str_add(mul5, num);
dst = mul5 + 1;
if (dst[digits] > '5')
dst++;
dst[digits] = '\0';
return dst;
}
void main(void)
{
char *num = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001";
int i;
printf("char * frac2[] = {\n", str_rev(num));
for (i = 1; i < 56 * 2; i++)
{
printf("\t\"%s\",\n", str_rev(num));
strcpy(num, str_div2(num));
}
printf("};\n", str_rev(num));
}