Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 273

# Help using a loop to make code more efficient

Is it possible to make the following code more efficient using a loop? I tried but can't figure it out.

Dim LocationX as integer
Dim LocationY as integer

'nw
Dim shrtNWCoordinateX As Short = LocationX + 16
Dim shrtNWCoordinateY As Short = LocationY - 16
Dim shrtNWZone As Short = GetZoneID(shrtNWCoordinateX, shrtNWCoordinateY)

'ne
Dim shrtNECoordinateX As Short = LocationX + 16
Dim shrtNECoordinateY As Short = LocationY + 16
Dim shrtNEZone As Short = GetZoneID(shrtNECoordinateX, shrtNECoordinateY)

'sw
Dim shrtSWCoordinateX As Short = LocationX - 16
Dim shrtSWCoordinateY As Short = LocationY - 16
Dim shrtSWZone As Short = GetZoneID(shrtSWCoordinateX, shrtSWCoordinateY)

'se
Dim shrtSECoordinateX As Short = LocationX - 16
Dim shrtSECoordinateY As Short = LocationY + 16
Dim shrtSEZone As Short = GetZoneID(shrtSECoordinateX, shrtSECoordinateY)
0
Hepen
• 4
• 2
• 2
1 Solution

Commented:
What do you mean by more efficient? Faster executing? Less typing?

Also, are all 3 of the results needed or do you just need the zone?

David
0

Author Commented:
all the results are needed because the zones might be different

more efficient meaning less lines of code but maybe with a loop . it seems i'm storing four different zone values in four different variables? I heard of arrays or something 'm not sure.
0

Commented:
There's a few less additions here:

'nw
Dim shrtNWCoordinateX As Short = LocationX + 16
Dim shrtNWCoordinateY As Short = LocationY - 16
Dim shrtNWZone As Short = GetZoneID(shrtNWCoordinateX, shrtNWCoordinateY)

'ne
Dim shrtNECoordinateX As Short = shrtNWCoordinateX
Dim shrtNECoordinateY As Short = LocationY + 16
Dim shrtNEZone As Short = GetZoneID(shrtNECoordinateX, shrtNECoordinateY)

'sw
Dim shrtSWCoordinateX As Short = LocationX - 16
Dim shrtSWCoordinateY As Short = shrtNWCoordinateY
Dim shrtSWZone As Short = GetZoneID(shrtSWCoordinateX, shrtSWCoordinateY)

'se
Dim shrtSECoordinateX As Short = shrtSWCoordinateX
Dim shrtSECoordinateY As Short = shrtNECoordinateY
Dim shrtSEZone As Short = GetZoneID(shrtSECoordinateX, shrtSECoordinateY)
0

Commented:
By needing all results, I mean't something like this

'nw
Dim shrtNWZone As Short = GetZoneID(LocationX + 16, LocationY - 16)

'ne
Dim shrtNEZone As Short = GetZoneID(LocationX + 16, LocationY + 16)

'sw
Dim shrtSWZone As Short = GetZoneID(LocationX - 16, LocationY - 16)

'se
Dim shrtSEZone As Short = GetZoneID(LocationX - 16, LocationY + 16)

0

Commented:
To answer your question directly, I don't see how loops would help here.

:-David
0

Commented:
Not that you need it, but I had some fun with a loop and sin and cos: :-)

Dim LocationX As Integer
Dim LocationY As Integer

Dim NewLocationX As Integer
Dim NewLocationY As Integer
Dim i As Integer
Dim r As Single
Dim k As Single
k = (Math.Sqrt(2) / 2)

Dim GoDistance As Integer = 16

For i = 0 To 3

r = (i * 2 + 1) / 4

NewLocationX = Math.Sin(Math.PI * r) / k * GoDistance + LocationX
NewLocationY = Math.Cos(Math.PI * r) / k * GoDistance + LocationY

Select Case i
Case 0 'nw
Dim shrtNWZone As Short = GetZoneId(NewLocationX, NewLocationY)
Case 1 'sw
Dim shrtSWZone As Short = GetZoneId(NewLocationX, NewLocationY)
Case 2 'se
Dim shrtSEZone As Short = GetZoneId(NewLocationX, NewLocationY)
Case 3 'ne
Dim shrtNeZone As Short = GetZoneId(NewLocationX, NewLocationY)
End Select

Next
0

Commented:
sorry swap the nw and ne, sw and se. case 0 'ne ...
0

Author Commented:
LOL nice
0

## Featured Post

• 4
• 2
• 2
Tackle projects and never again get stuck behind a technical roadblock.