65.9K
CodeProject is changing. Read more.
Home

Magic square in VB.NET

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.60/5 (5 votes)

Dec 13, 2011

CPOL
viewsIcon

30081

Calculating the magic square in VB.NET.

This is a simple console application developed with VB.NET for gerating the magic square of an odd number.

The magic squares problem leads to work into areas of mathematics such as theories of groups, lattices, Latin squares, determinants, partitions, matrices, and congruence arithmetic. Computer scientists are also perplexed by the difficulty of generating all magic squares of larger sizes.

In the solution, Sum shows the summation of any row, column, or diagonal.

The complete code is like this....

Module Module1
    Public s, size As Integer

    Sub Main()
        Dim n As Integer = 1
        Dim i As Integer = 1
        Dim j As Integer = 2
       
        Console.WriteLine()
        Console.Write("ENTER THE SIZE OF MAGIC SQUARE:  ")
        s = Console.ReadLine()
        size = s
        Dim sum As Integer = 0

        Dim ans(s, s) As Integer

        If s <> 3 Then
            Dim tmp As Integer = (s - 3) \ 2
            i = i + tmp
            j = j + tmp
        End If

        While n <= s * s

            If ans(i, j) = 0 Then
                ans(i, j) = n
            Else
                n = n - 1
                i = i + 2
            End If

            i = i - 1
            j = j + 1

            If (i = -1 And j = s) Then
                i = 0
                j = 1
            End If

            If j >= s Then
                j = j - s
            End If

            If i < 0 Then
                i = s - 1
            End If
            n = n + 1
        End While

        Console.WriteLine()
        Console.WriteLine("MAGIC SQUARE:")
        Console.WriteLine()

        For k As Integer = 0 To size - 1
            For l As Integer = 0 To size - 1
                Console.Write("    " & ans(k, l))
            Next
            Console.WriteLine()
        Next

        Console.WriteLine()
        sum = ans(s \ 2, s \ 2) * s
        Console.Write("SUM: " & sum)

        Console.ReadKey()
    End Sub

End Module

The summation is based on this equation:

SUM =  { N ( N^2 + 1 ) } /  2

Where the N is number of row or column. If N = 5, then the result will be 65.