Sale!

Homework 2 prints an n by n “magic square”

$30.00

Category:

Homework 2 5/25/16, 3:24 PM
https://usflearn.instructure.com/courses/1112240/assignments/4638908 Page 1 of 2
Homework 2
Due Jun 1 by 12:30pm Points 30 Submitting a file upload
Submit Assignment
Write a 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. (If you’re curious about more magic square
info: http://mathforum.org/alejandre/magic.square/adler/adler.whatsquare.html
(http://mathforum.org/alejandre/magic.square/adler/adler.whatsquare.html) and https://en.wikipedia.org/wiki/Magic_square
(https://en.wikipedia.org/wiki/Magic_square) )
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: 33
8 1 6
3 5 7
4 9 2
Sum of Magic Numbers: 45
Enter size of magic square: 22
Invalid Input: 2
Enter size of magic square: 103 103
Invalid Input: 103
Homework 2 5/25/16, 3:24 PM
https://usflearn.instructure.com/courses/1112240/assignments/4638908 Page 2 of 2
Enter size of magic square: 77
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

Reviews

There are no reviews yet.

Be the first to review “Homework 2 prints an n by n “magic square””

Your email address will not be published.