#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main(void)
{
int n;
printf("This program creates a magic square of a specified size.\n");
printf("The size must be odd number between 1 and 99.\n");
printf("Enter size of magic square: ");
scanf_s("%d", &n);
int** a = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++)
{
a[i] = (int*)malloc(n * sizeof(int));
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
a[i][j] = false;
}
}
a[0][2] = 1;
int row = 0, col = 2;
for (int i = 2; i <= n*n; i++)
{
int old_row = row, old_col = col;
row--;
if (row==-1)
{
row = n - 1;
}
col++;
if (col==n)
{
col = 0;
}
if (a[row][col]==false)
{
a[row][col] = i;
}
else
{
row = old_row + 1;
col = old_col;
a[row][col] = i;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf(" %d ", a[i][j]);
}
printf("\n");
}
return 0;
}