-------------------------------------------------------------------------------------------
void MagicSquare(int n)
{ int i, j, k, l, data;
int ** square = new int * [n];
for (i=0; i<n; i++)
{ square[i] = new int [n];
}
for (i=0; i<n; i++)
for (j=0; j<n; j++)
square[i][j]=0;
if (radioButton1->Checked || radioButton3->Checked)
{ i = 0;
j = (n-1)/2;
}
else
{ i = n-1;
j = (n-1)/2;
}
square[i][j] = 1;
data = 2;
while (data <= n*n)
{ if (radioButton1->Checked)
{ k = (i-1<0) ? n-1 : i-1;
l = (j-1<0) ? n-1 : j-1;
if (square[k][l]>0) i = (i+1) % n;
else { i = k; j = l; }
}
else if (radioButton2->Checked)
{ k = (i+1==n) ? 0 : i+1;
l = (j-1<0) ? n-1 : j-1;
if (square[k][l]>0) i = (i-1 < 0) ? n-1 : i-1;
else { i = k; j = l; }
}
else if (radioButton3->Checked)
{ k = (i-1<0) ? n-1 : i-1;
l = (j+1==n) ? 0 : j+1;
if (square[k][l]>0) i = (i+1) % n;
else { i = k; j = l; }
}
else if (radioButton4->Checked)
{ k = (i+1==n) ? 0 : i+1;
l = (j+1==n) ? 0 : j+1;
if (square[k][l]>0) i = (i-1 < 0) ? n-1 : i-1;
else { i = k; j = l; }
}
square[i][j]=data++;
}
}