Solved

# Printing Odd Magic Square

Posted on 2008-06-23

I have coded a two-diminsional array set up to place one at the top row, middle column and follow conditions to place each number in the right row and column to equal a magic sqaure. The program runs successfully but somewhere has logical errors. When my program compiles, the printed square shows what appears to be zeros or -858993460. Please advise any corrections. Thank You.

#include "stdafx.h"

void MagicAlg(int magic[20][20], int n);

void PrintMagic(int magic[20][20], int n);

int main()

{

int n;

printf("Enter an odd number >= 3\n" );

scanf("%d", &n);

int magic[20][20];

PrintMagic(magic, n);

return (0);

}

void MagicAlg(int magic[20][20], int n)

{

int a;

int i=0;

int j=n/2;

for (a=1; a<=n*n; ++a)

{

magic[i][j] = a; //1 is placed at row/column 01 with following conditions filling in square.

i--;

j++;

if (a%n == 0) //If number is divisible by index, row down 1, column same.

{

i += 2;

j--;

}

else

{

if (j==n) //If column = index, column = column - index.

j -= n;

else if (i<0) //If row < 0, row = row + index.

i += n;

}

}

}

void PrintMagic(int magic[20][20], int n)

{

for (int i=0; i<n; i++)

{

for (int j=0; j<n; j++)

printf(" %d", magic[i][j]);

printf("\n");

}

}