Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- class Magic {
- private:
- int size_;
- int ** mass_;
- public:
- Magic(int size)
- {
- size_ = size;
- mass_ = new int*[size_];
- for (int i = 0; i != size_; ++i)
- {
- mass_[i] = new int[size_];
- for (int j = 0; j != size_; ++j)
- mass_[i][j] = 0;
- }
- }
- ~Magic()
- {
- for (int i = 0; i != size_; ++i)
- delete[] mass_[i];
- delete[] mass_;
- }
- int reflect(int k)
- {
- if (k<0)
- return k + size_;
- if (k>size_ - 1)
- return k - size_;
- return k;
- }
- void fill()
- {
- int j = size_ / 2 - 1, k = size_ / 2;
- mass_[j][k] = 1;
- for (int i = 2; i != size_ * size_ + 1; ++i)
- {
- if (mass_[reflect(j - 1)][reflect(k - 1)] == 0)
- {
- j = reflect(j - 1);
- k = reflect(k - 1);
- mass_[j][k] = i;
- }
- else
- {
- j = reflect(j - 2);
- mass_[j][k] = i;
- }
- }
- }
- void print()
- {
- int degree2;
- int len = 0;
- degree2 = size_ * size_;
- /*while (degree2>0)
- {
- degree2 /= 10;
- len++;
- }*/
- for (int row = 0; row<size_; row++)
- {
- for (int col = 0; col<size_; col++)
- {
- printf("%d ", mass_[row][col]);
- }
- putchar('\n');
- }
- putchar('\n');
- }
- };
- int main(int argc, char* argv[])
- {
- /*if (argc != 2)
- return(puts("Usage: mafic degree"));
- int n = atoi(argv[1]);
- if ((n % 2) == 0)
- {
- puts("Usage: magic 5(or 7,11,17,23...)");
- return(n);
- }*/
- Magic n(5);
- n.fill();
- n.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement