Games
Problems
Go Pro!

Two Dimensions, One Dimension

Reference > Science > Technology > Beginner Programming Tips
 

Let's say you have a two-dimensional array: MyArray(9,9). That's an array with 100 elements; starting with MyArray(0,0), all the way to MyArray(9,9) and everything in between. Suppose you wanted to treat the elements of this array as a one-dimensional array. In other words, you wanted to think of the array like this:

Element  #0: MyArray(0,0)
Element  #1: MyArray(0,1)
Element  #2: MyArray(0,2)
...
Element  #9: MyArray(0,9)
Element #10: MyArray(1,0)
Element #11: MyArray(1,1)
...
Element #97: MyArray(9,7)
Element #98: MyArray(9,8)
Element #98: MyArray(9,9)

This is a situation you may run into from time to time, and it's good to be able to "walk through" a two-dimensional array, assigning a one-dimensional index to each element. Now, for this example, I've picked something easy, because you'll notice that the ones and tens places of the one-dimensional index correspond to the X and Y dimensions of the two-dimensional indices. What's the one-dimensional index for MyArray(7,8)? It's easy! Put the 7 and the 8 together, and you've got Element #78.

But we need to express that mathematically, so the computer can understand it.

What is the "tens" place of a number? The tens place tells you "how many tens" are in a number. For example, the number 78 is "seven tens and eight more", or 7 x 10 + 8. Great! That tells us how to create our one-dimensional index! Check this out:
 

Dim MyArray(9,9)
Dim X As Integer
Dim Y As Integer

'Get the one-dimensional index
Public Function ArrayIndex(Y As Integer, X As
Integer)
   ArrayIndex = (Y * 10) + X
End Function

That's it! Notice that I put the line of code inside a function. This is because I'll probably be using that line of code a lot, and I don't want to have to keep rewriting it over and over again. Plus, if I ever change the array to different dimensions, like maybe a 20x20 array, I would need to change the code, and having it inside a function means I only have to change it in one place.

Speaking of different dimensions, let's suppose MyArray now is a 7x7 array. How does that change our code? Well, that changes it just a little bit:
 

Dim MyArray(6,6)
Dim X As Integer
Dim Y As Integer

'Get the one-dimensional index
Public Function ArrayIndex(Y As Integer, X As
Integer)
   ArrayIndex = (Y * 7) + X
End Function


Easy, right? In my next tip, I'll talk about how to reverse the process and convert a one dimensional array index into a two dimensional array index.

Questions

1.
Write a function to get an index into the array MyArray(12,15).
2.
Write a function to get an index into the array MyArray(8,10).
Assign this reference page
Click here to assign this reference page to your students.
Testing for Zero ValuesTesting for Zero Values
One Dimension, Two DimensionsOne Dimension, Two Dimensions
 

Blogs on This Site

Reviews and book lists - books we love!
The site administrator fields questions from visitors.
Like us on Facebook to get updates about new resources
Home
Pro Membership
About
Privacy