# Help with writing a program that creates an odd n*n magic square where n is...

• 11-21-2012
blisman20
Help with writing a program that creates an odd n*n magic square where n is...
I am in a beginning C programming class and I have this assignment: Write a program that creates an N*N magic square, i.e., a square arrangement of the numbers 1,2,…,N^2 in which the sum of rows, columns, and diagonals are the same. The user will specify the size of the square matrix: N. The value N must be an odd number between 1 and 15.

I am using visual studio 2010. Also I am only allowed to use C89. My program will not compile and I have been trying to fix my problems, but I still have a problem with what the program prints out. My program prints out a vertical column of the magic square. For example if my magic square is size 3, it'll print:
8
1
6

3
5
7

4
9
2

Code:

```#include <stdio.h> #define array_size 15 int main (void) {         int row, column, size, n = 2, magic_square [array_size][array_size];                 for ( ; ; ) {         printf ("Enter size of magic square: ");         scanf ("%d", &size);         if (size % 2 == 0)                 printf ("Enter an odd number!\n");         else if (size <= 0 || size > 15)                 printf ("Enter a number between 1 and 15!\n");         else {                 magic_square [array_size][array_size];                 for (row = 0; row < size; row++) {                         for (column = 0; column < size; column++) {                                 magic_square [row][column] = 0;                         }                 }                 row = 0;                 column = (size/2);                 magic_square [row][column] = 1;                 for (n; n<= size*size; n++) {                         if (--row < 0)                                 row = (size -1);                         if (++column > size -1)                                 column = 0;                         if (magic_square [row][column] != 0) {                                 if (++row > (size -1))                                         row = 0;                                 if (--column < 0)                                         column = size - 1;                                 while (magic_square [row][column] != 0)                                         if (++row > (size -1))                                                 row = 0;                         }                         magic_square [row][column] = n;                 }                                 for (row = 0; row < size; row++) {                                         for (column = 0; column < size; column++) {                                                 printf ("%4d\n", magic_square [row][column]);                                         }                                         printf ("\n");                                 }                                 break;         }         }         return 0; }```
• 11-21-2012
blisman20
Sorry I figured it out!
• 11-21-2012
Salem
Code:

```\$ ./a.out Enter size of magic square: 3   8  1  6   3  5  7   4  9  2```
Perhaps remove the \n from the first printf ?