Advertisement
Guest User

Untitled

a guest
Feb 13th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. class Magic {
  4. private:
  5.     int size_;
  6.     int ** mass_;
  7. public:
  8.     Magic(int size)
  9.     {
  10.         size_ = size;
  11.         mass_ = new int*[size_];
  12.         for (int i = 0; i != size_; ++i)
  13.         {
  14.             mass_[i] = new int[size_];
  15.             for (int j = 0; j != size_; ++j)
  16.                 mass_[i][j] = 0;
  17.         }
  18.     }
  19.     ~Magic()
  20.     {
  21.         for (int i = 0; i != size_; ++i)
  22.             delete[] mass_[i];
  23.         delete[] mass_;
  24.     }
  25.  
  26.     int reflect(int k)
  27.     {
  28.         if (k<0)
  29.             return k + size_;
  30.         if (k>size_ - 1)
  31.             return k - size_;
  32.         return k;
  33.     }
  34.     void fill()
  35.     {
  36.         int j = size_ / 2 - 1, k = size_ / 2;
  37.         mass_[j][k] = 1;
  38.         for (int i = 2; i != size_ * size_ + 1; ++i)
  39.         {
  40.             if (mass_[reflect(j - 1)][reflect(k - 1)] == 0)
  41.             {
  42.                 j = reflect(j - 1);
  43.                 k = reflect(k - 1);
  44.                 mass_[j][k] = i;
  45.             }
  46.             else
  47.             {
  48.                 j = reflect(j - 2);
  49.                 mass_[j][k] = i;
  50.             }
  51.         }
  52.     }
  53.     void print()
  54.     {
  55.         int degree2;
  56.         int len = 0;
  57.         degree2 = size_ * size_;
  58.         /*while (degree2>0)
  59.         {
  60.             degree2 /= 10;
  61.             len++;
  62.         }*/
  63.         for (int row = 0; row<size_; row++)
  64.         {
  65.             for (int col = 0; col<size_; col++)
  66.             {
  67.                 printf("%d ", mass_[row][col]);
  68.             }
  69.             putchar('\n');
  70.         }
  71.         putchar('\n');
  72.     }
  73. };
  74. int main(int argc, char* argv[])
  75. {
  76.     /*if (argc != 2)
  77.         return(puts("Usage: mafic degree"));
  78.     int n = atoi(argv[1]);
  79.     if ((n % 2) == 0)
  80.     {
  81.         puts("Usage: magic 5(or 7,11,17,23...)");
  82.         return(n);
  83.     }*/
  84.     Magic n(5);
  85.     n.fill();
  86.     n.print();
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement