Three word location: Difference between revisions
Content added Content deleted
Alpha bravo (talk | contribs) (Added AutoHotkey) |
(Three word location en FreeBASIC) |
||
Line 430: | Line 430: | ||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Nim}} |
|||
<lang freebasic>Print "Starting figures:" |
|||
Dim As Double lat = 28.3852, longi = -81.5638 |
|||
Print Using " latitude = &, longitude = &"; lat; longi |
|||
' Convert "lat" and "long" to positive integers. |
|||
Dim As Integer ilat = Cint(lat * 10000 + 900000) |
|||
Dim As Integer ilong = Cint(longi * 10000 + 1800000) |
|||
' Build 43 bit int comprising 21 bits (lat) and 22 bits (lon). |
|||
Dim As Double latlong = ilat Shl 22 + ilong |
|||
' Isolate relevant bits. |
|||
Dim As Integer w1 = latlong Shr 28 And &H7fff |
|||
Dim As Integer w2 = latlong Shr 14 And &H3fff |
|||
Dim As Integer w3 = latlong And &H3fff |
|||
' Convert to word format. |
|||
Dim As String*5 w1s = String(5, "0"), w2s = String(5, "0"), w3s = String(5, "0") |
|||
Mid(w1s, 6-Len(Str(w1))) = Str(w1) |
|||
Mid(w2s, 6-Len(Str(w2))) = Str(w2) |
|||
Mid(w3s, 6-Len(Str(w3))) = Str(w3) |
|||
' Print the results. |
|||
Print !"\nThree word location is:" |
|||
Print Using " W\ \ W\ \ W\ \"; w1s; w2s; w3s |
|||
latlong = w1 Shl 28 Or w2 Shl 14 Or w3 |
|||
ilat = latlong Shr 22 |
|||
ilong = latlong And &H3fffff |
|||
lat = (ilat - 900000) / 10000 |
|||
longi = (ilong - 1800000) / 10000 |
|||
' Print the results. |
|||
Print !"\nAfter reversing the procedure:" |
|||
Print Using " latitude = &, longitude = &"; lat; longi |
|||
Sleep</lang> |
|||
{{out}} |
|||
<pre>Igual que la entrada de Nim</pre> |
|||