Search Tools Links Login

a - Odd Magic Square


Visual Basic 6, or VB Classic

Magic square is a set of numbers arranged in a particular order whose column-wise, row-wise and diagonal-wise sums are all the same. This program explains the mathematics behind an odd magic square.
Magic, Fun, Maths, Interesting, Easy even for beginners and excellent!!

Original Author: K. O. Thaha Hussain

Inputs

Place an MS Flex Grid Control. Name it Grid.

Code

'(C) K. O. Thaha Hussain. All rights reserved
'Analyst Programmer
'Company: http://www.induswareonline.com
'URL: http://www.bcity.com/thahahussain
'Note: Adjust the DataTypes to make room for
'large numbers..
'
'The Behind Scene Mathematics is simple!
'Step1. Begin 1 at the middle of the first row
'Step2. Next number should be one row up
'   one column right
'Step3. If the present row < the first then
'        make it last
'Step4. If the present column > the last then
'        make it first
'Step5. The rule for the number which follows
'       the multiple of the
'  order of magic square, is one row down
'Finished!!
Option Explicit
Dim N As Integer
Private Sub Form_Load()
Do While N Mod 2 = 0
N = Val(InputBox("Enter an Odd Number (Ex: 3, 5, 7 etc.)", _
"Order of Magic Square", 5))
Loop
Grid.BackColor =
Grid.FixedCols = 0
Grid.FixedRows = 0
Grid.Left = 0
Grid.Top = 0
Grid.Rows = N
Grid.Cols = N
Me.Caption = "Odd Magic Sqaure By K.O. Thaha Hussain " _
   & "   Order : " & Str(N)
Call MagicSquare

End Sub
Private Sub Form_Resize()
Grid.Width = Me.ScaleWidth
Grid.Height = Me.ScaleHeight
End Sub
Private Sub MagicSquare()
Dim Row As Integer, Column As Integer, I As Integer, Number As Integer
Dim Magic(100, 100) As Integer
Number = 1
Row = 0
Column = (N + 1) / 2 - 1
Magic(Row, Column) = Number

For I = 2 To N * N
If Number Mod N <> 0 Then
  Row = Row - 1
  Column = Column + 1
Else
  Row = Row + 1
End If
If Row < 0 Then Row = N - 1
If Column > N - 1 Then Column = 0
Number = Number + 1
Magic(Row, Column) = Number
Next I
'Loops to put the values into grid
For Row = 0 To N - 1
For Column = 0 To N - 1
  Grid.Row = Row
  Grid.Col = Column
  Grid.Text = Format(Magic(Row, Column), "#####")
Next Column
Next Row
End Sub

About this post

Posted: 2002-06-01
By: ArchiveBot
Viewed: 178 times

Categories

Visual Basic 6

Attachments

No attachments for this post


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.