home *** CD-ROM | disk | FTP | other *** search
/ messroms.de / 2007-01-13_www.messroms.de.zip / CGENIE / TOOLS / DZ80.ZIP / frac2.c < prev    next >
C/C++ Source or Header  |  1999-12-07  |  1KB  |  70 lines

  1. #include <stdlib.h>
  2. #include <string.h>
  3.  
  4. static    char    mul5[128+1] = "";
  5. static    char    rstr[128+1] = "";
  6.  
  7.  
  8. char *str_rev(char * src)
  9. {
  10.     char * dst = rstr + strlen(src);
  11.     *dst = '\0';
  12.     while (*src)
  13.         *--dst = *src++;
  14.     return dst;
  15. }
  16.  
  17.  
  18. void str_add(char * dst, char * src)
  19. {
  20.     int i;
  21.     int j;
  22.     for (i = 0; src[i]; i++)
  23.     {
  24.         dst[i] += src[i] - '0';
  25.         if (dst[i] > '9')
  26.         {
  27.             dst[i] -= 10;
  28.             for (j = i + 1; dst[j]; j++)
  29.             {
  30.                 dst[j] += 1;
  31.                 if (dst[j] <= '9')
  32.                     break;
  33.                 dst[j] -= 10;
  34.             }
  35.         }
  36.     }
  37. }
  38.  
  39. char *str_div2(char * num)
  40. {
  41.     char * dst;
  42.     int digits = strlen(num);
  43.  
  44.     memset(mul5, '0', sizeof(mul5) - 1);
  45.     str_add(mul5, num);
  46.     str_add(mul5, num);
  47.     str_add(mul5, num);
  48.     str_add(mul5, num);
  49.     str_add(mul5, num);
  50.     dst = mul5 + 1;
  51.     if (dst[digits] > '5')
  52.         dst++;
  53.     dst[digits] = '\0';
  54.     return dst;
  55. }
  56.  
  57.  
  58. void main(void)
  59. {
  60.     char *num = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001";
  61.     int i;
  62.     printf("char * frac2[] = {\n", str_rev(num));
  63.     for (i = 1; i < 56 * 2; i++)
  64.     {
  65.         printf("\t\"%s\",\n", str_rev(num));
  66.         strcpy(num, str_div2(num));
  67.     }
  68.     printf("};\n", str_rev(num));
  69. }
  70.