home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / tpchal_1.zip / WH.C < prev    next >
C/C++ Source or Header  |  1994-05-26  |  2KB  |  100 lines

  1. /*
  2. **  Wayne Halsdorf (1:141/1135)
  3. */
  4.  
  5. #include    <stdio.h>
  6. #include    <stdlib.h>
  7. #include    <string.h>
  8.  
  9. char    numb[10];
  10. char    ods[] = "13579";
  11. char    evs[] = "2468";
  12. long    retval;
  13.  
  14. void    genodd(int pos);
  15. void    geneven(int pos);
  16.  
  17. void    geneven(int pos)
  18. {
  19.       int     e, npos;
  20.       long    v;
  21.       char    sav;
  22.  
  23.       npos = pos + 1;
  24.       for(e = 0; e < 4; e++)
  25.       {
  26.             if(evs[e] != '*')
  27.             {
  28.                   sav = numb[pos] = evs[e];
  29.                   switch(npos)
  30.                   {
  31.                   case 4:
  32.                   case 6:
  33.                   case 8:
  34.                         numb[npos] = '\0';
  35.                         v = atol(numb);
  36.                         if(v % (npos) != 0)
  37.                               break;
  38.                   default:
  39.                         evs[e] = '*';
  40.                         genodd(npos);
  41.                         evs[e] = sav;
  42.                         break;
  43.                   }
  44.             }
  45.       }
  46. }
  47.  
  48. void    genodd(int pos)
  49. {
  50.       long    v;
  51.       int     o, npos;
  52.       char    sav;
  53.  
  54.       npos = pos + 1;
  55.       for(o = 0; o < 5; o++)
  56.       {
  57.             if(ods[o] != '*')
  58.             {
  59.                   sav = numb[pos] = ods[o];
  60.                   numb[npos] = '\0';
  61.                   v = atol(numb);
  62.                   switch(npos)
  63.                   {
  64.                   case 3:
  65.                   case 5:
  66.                   case 7:
  67.                         if(v % (npos) != 0)
  68.                               break;
  69.                   case 1:
  70.                         ods[o] = '*';
  71.                         geneven(npos);
  72.                         ods[o] = sav;
  73.                         break;
  74.                   case 9:
  75.                         retval = v;
  76.                         break;
  77.                   }
  78.             }
  79.       }
  80. }
  81.  
  82.  
  83. main(void)
  84. {
  85. #ifdef TEST
  86.       int i;
  87.  
  88.       for (i = 0; i < 1000; ++i)
  89.       {
  90.             strcpy(ods, "13579");
  91.             strcpy(evs, "2468");
  92. #endif
  93.             genodd(0);
  94. #ifdef TEST
  95.       }
  96. #endif
  97.       printf("%li\n", retval);
  98.       return 0;
  99. }
  100.