home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR2 / DVPG30FS.ZIP / G.C < prev    next >
C/C++ Source or Header  |  1993-11-17  |  1KB  |  68 lines

  1.  
  2. #include <stdio.h>
  3.  
  4.  
  5.  
  6. int temp1, temp2, temp3, outp;
  7.  
  8. int forward(int row, int max)
  9. {
  10.     temp1 = max >> 1;
  11.     temp2 = max >> 2;
  12.     temp3 = max >> 3;
  13.     if (row < temp3)
  14.         outp = row << 3;
  15.     else
  16.     if (row < temp2)
  17.         outp = ((row - temp3) << 3) + 4;
  18.     else
  19.     if (row < temp1)
  20.         outp = ((row - temp2) << 2) + 2;
  21.     else
  22.         outp = ((row - temp1) << 1) + 1;
  23. return outp;
  24. }
  25.  
  26.  
  27. int reverse(int row, int max)
  28. {
  29. int i;
  30.  
  31.     temp1 = max >> 1;
  32.     temp2 = max >> 2;
  33.     temp3 = max >> 3;
  34.     for (i=0; i < max; i++){
  35.         if (i < temp3)
  36.             outp = i << 3;
  37.         else
  38.         if (i < temp2)
  39.             outp = ((i - temp3) << 3) + 4;
  40.         else
  41.         if (i < temp1)
  42.             outp = ((i - temp2) << 2) + 2;
  43.         else
  44.             outp = ((i - temp1) << 1) + 1;
  45.         if (outp == row) return i;
  46.         }
  47.     return -99;
  48.     return row;        /* fall thru and do nothing if we get here */
  49. }
  50.  
  51.  
  52.  
  53. int main(int argc, char *argv[])
  54. {
  55. int i, size, j;
  56.  
  57. if (argc < 2) return(0);
  58. sscanf(argv[1],"%i", &size);
  59.  
  60. for (i=0; i < size; i++){
  61.     j = forward(i, size);
  62.     printf("%i, for: %i, rev: %i\n", i, j, reverse(j, size));
  63.     }
  64.  
  65. return 1;
  66. }
  67.  
  68.