Click here to Skip to main content
Click here to Skip to main content

Magic square in VB.NET

By , 14 Dec 2011
Rate this:
Please Sign up or sign in to vote.

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.

License

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

About the Author

NikulDarji
Software Developer
India India
No Biography provided

Comments and Discussions

 
GeneralRe: Okay so what does it mean PinmemberPeter Hawke22-Dec-11 12:55 
GeneralRe: :) PinmemberNikulDarji20-Dec-11 2:40 
GeneralRe: I agree, that paying attention to the logic behind the progr... PinmemberMember 841302020-Dec-11 1:44 
GeneralDim ans(s, s) As Integer What does the ans(s, s) mean. Is ... PinmemberPeter Hawke20-Dec-11 12:49 
GeneralRe: Yes....:) PinmemberNikulDarji20-Dec-11 18:30 
GeneralReason for my vote of 2 I'll add to the previous dissatisfac... PinmemberMember 841302019-Dec-11 23:17 
GeneralRe: Don't u think u have to pay attention on logic behind this p... PinmemberNikulDarji20-Dec-11 1:24 
GeneralReason for my vote of 1 How about explaining what a 'magic s... Pinmemberpt140118-Dec-11 6:02 
Reason for my vote of 1
How about explaining what a 'magic square' is? Or what the 'magic squares problem' is?
 
The code doesn't have a single line of commentry, and without an explanation of the problem it claims to solve it's hard to tell whether it's a good solution - or even it it works.

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.140415.2 | Last Updated 14 Dec 2011
Article Copyright 2011 by NikulDarji
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid