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
  • Last Modified:

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
Asked:
Hepen
  • 4
  • 2
  • 2
1 Solution
 
anyoneisCommented:
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
 
HepenAuthor 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
 
anyoneisCommented:
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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
anyoneisCommented:
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
 
anyoneisCommented:
To answer your question directly, I don't see how loops would help here.

:-David
0
 
vb_jonasCommented:
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
 
vb_jonasCommented:
sorry swap the nw and ne, sw and se. case 0 'ne ...
0
 
HepenAuthor Commented:
LOL nice
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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