Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Help using a loop to make code more efficient

Posted on 2006-06-15
8
Medium Priority
?
271 Views
Last Modified: 2010-04-23
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
Comment
Question by:Hepen
  • 4
  • 2
  • 2
8 Comments
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917653
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 Comment

by:Hepen
ID: 16917662
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
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917673
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 11

Accepted Solution

by:
anyoneis earned 2000 total points
ID: 16917696
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
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917698
To answer your question directly, I don't see how loops would help here.

:-David
0
 
LVL 12

Expert Comment

by:vb_jonas
ID: 16917817
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
 
LVL 12

Expert Comment

by:vb_jonas
ID: 16917835
sorry swap the nw and ne, sw and se. case 0 'ne ...
0
 

Author Comment

by:Hepen
ID: 16917837
LOL nice
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question