Write a c program that prints an n by n magic square a


Question:
(Main issue is in bold, other parts is already coded)
Write a C program that prints an n by n "magic square" (a square arrangement of the numbers 1, 2, ..., n2 in which the sums of the rows, columns, and diagonals are all the same). The user will specify the value of n.
Store the magic square in a two dimensional array. Start by placing the number 1 in the middle of row 0. Place each of the remaining numbers 2, 3, ... , n2 by moving up one row and over one column. Any attempt to go outside the bounds of the array should "wrap around" to the opposite side of the array. For example, instead of storing the next number in row -1 (row negative 1), we would store it in row n - 1 (the last row). Instead of storing the next number in column n, we would store it in column 0. If a particular element is already occupied, put the number directly below the previously stored number.
The magic square only needs to be up to 11 by 11 and can only be created from odd numbers.
I want you to use functions for this project. I would like you to separately declare and define 3 separate functions. One for creating the magic square and putting it the two dimensional array.One for printing the magic square (for your printf, use 5 minimum field width).Finally, one for getting and returning the sum of the numbers in the magic square array.
Take in input in the main function. If the input is an even number or is a number not between 1 and 11, exit the program. Also, print the value of the sum of magic numbers via the main function, since your function to calculate this should only be returning a integer.
For the sum of all the numbers in the magic square array, I want you to use while loops. You can use either for loops or while loops for the print and create magic number functions.
HINT: The only function that needs to return something is the sum magic square function (integer). The other two function don't need to return anything. C is a pass by value language, meaning that it typically can't change the values of arguments in functions. This doesn't apply to arrays because they are references (more in chapter 12). That means one argument in the functions should be a two dimensional array. You will be able to operate on this array.
Sample I/O:
Enter size of magic square: 3
8 1 6
3 5 7
4 9 2
Sum of Magic Numbers: 45
Enter size of magic square: 2
Invalid Input: 2
Enter size of magic square: 103
Invalid Input: 103
Enter size of magic square: 7
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
Sum of Magic Numbers: 1225

Solution Preview :

Prepared by a verified Expert
C/C++ Programming: Write a c program that prints an n by n magic square a
Reference No:- TGS01506078

Now Priced at $25 (50% Discount)

Recommended (96%)

Rated (4.8/5)