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");
}
}