#include <stdio.h>
#define N 99
int main()
{
int n, i, j, magic[N][N] = {0}, row = 0, col;
printf("This programs creates a magic squares of a specified size.\n");
printf("The size must be an odd number between 1 and 99.\n");
printf("Enter the size of magic square: ");
scanf("%d", &n);
col = (n-1)/2; //starting position
magic[row][col] = 1;
for(i = 2; i <= n*n; i++) {
row = (row + n - 1)%n; //the usual moves: column up, row under
col = (col + 1)%n; //the modulo is a quick solution to the "rolling trouble"
if(magic[row][col] != 0) { //but if that place's occupied, let's move under the last 'i' placed
row = (n + row + 2)%n;
col = (n + col - 1)%n;
}
magic[row][col] = i; //and let the cycle starts again
}
printf("\n"); //printing the array
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%4d", magic[i][j]);
}
printf("\n");
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gOTkKCmludCBtYWluKCkKewogICBpbnQgbiwgaSwgaiwgbWFnaWNbTl1bTl0gPSB7MH0sIHJvdyA9IDAsIGNvbDsKICAgCiAgIHByaW50ZigiVGhpcyBwcm9ncmFtcyBjcmVhdGVzIGEgbWFnaWMgc3F1YXJlcyBvZiBhIHNwZWNpZmllZCBzaXplLlxuIik7CiAgIHByaW50ZigiVGhlIHNpemUgbXVzdCBiZSBhbiBvZGQgbnVtYmVyIGJldHdlZW4gMSBhbmQgOTkuXG4iKTsKICAgcHJpbnRmKCJFbnRlciB0aGUgc2l6ZSBvZiBtYWdpYyBzcXVhcmU6ICIpOwogICBzY2FuZigiJWQiLCAmbik7CgogICAgCiAgICAgIGNvbCA9IChuLTEpLzI7ICAgICAvL3N0YXJ0aW5nIHBvc2l0aW9uCgkgIG1hZ2ljW3Jvd11bY29sXSA9IDE7CgogICAgICBmb3IoaSA9IDI7IGkgPD0gbipuOyBpKyspIHsKCSAgICAgcm93ID0gKHJvdyArIG4gLSAxKSVuOyAvL3RoZSB1c3VhbCBtb3ZlczogY29sdW1uIHVwLCByb3cgdW5kZXIKCQkgY29sID0gKGNvbCArIDEpJW47ICAgICAvL3RoZSBtb2R1bG8gaXMgYSBxdWljayBzb2x1dGlvbiB0byB0aGUgInJvbGxpbmcgdHJvdWJsZSIKCQkgaWYobWFnaWNbcm93XVtjb2xdICE9IDApIHsgLy9idXQgaWYgdGhhdCBwbGFjZSdzIG9jY3VwaWVkLCBsZXQncyBtb3ZlIHVuZGVyIHRoZSBsYXN0ICdpJyBwbGFjZWQKCQkgICAgICByb3cgPSAobiArIHJvdyArIDIpJW47CgkJCSAgY29sID0gKG4gKyBjb2wgLSAxKSVuOwoJCSAgfQoJCQltYWdpY1tyb3ddW2NvbF0gPSBpOyAvL2FuZCBsZXQgdGhlIGN5Y2xlIHN0YXJ0cyBhZ2FpbgoJICAgfQoJICAgCgkgIHByaW50ZigiXG4iKTsgICAgLy9wcmludGluZyB0aGUgYXJyYXkKCSAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBwcmludGYoIiU0ZCIsIG1hZ2ljW2ldW2pdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBwcmludGYoIlxuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApyZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKfSAg