Solved

Help using a loop to make code more efficient

Posted on 2006-06-15
8
215 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
 
LVL 11

Accepted Solution

by:
anyoneis earned 500 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
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
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

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

743 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now