Click here to Skip to main content
15,867,308 members
Articles / Programming Languages / Visual Basic
Tip/Trick

Magic square in VB.NET

Rate me:
Please Sign up or sign in to vote.
3.60/5 (5 votes)
14 Dec 2011CPOL 28.1K   3   8
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....



VB
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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralRe: Okay so what does it mean Pin
Peter Hawke22-Dec-11 12:55
Peter Hawke22-Dec-11 12:55 
GeneralRe: :) Pin
NikulDarji20-Dec-11 2:40
NikulDarji20-Dec-11 2:40 
GeneralRe: I agree, that paying attention to the logic behind the progr... Pin
Chris Ross 220-Dec-11 1:44
Chris Ross 220-Dec-11 1:44 
GeneralDim ans(s, s) As Integer What does the ans(s, s) mean. Is ... Pin
Peter Hawke20-Dec-11 12:49
Peter Hawke20-Dec-11 12:49 
GeneralRe: Yes....:) Pin
NikulDarji20-Dec-11 18:30
NikulDarji20-Dec-11 18:30 
GeneralReason for my vote of 2 I'll add to the previous dissatisfac... Pin
Chris Ross 219-Dec-11 23:17
Chris Ross 219-Dec-11 23:17 
GeneralRe: Don't u think u have to pay attention on logic behind this p... Pin
NikulDarji20-Dec-11 1:24
NikulDarji20-Dec-11 1:24 
GeneralReason for my vote of 1 How about explaining what a 'magic s... Pin
pt140118-Dec-11 6:02
pt140118-Dec-11 6:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.