Solved

Math question: latitude display

Posted on 2000-04-06
3
161 Views
Last Modified: 2010-04-02
I have the following code that displays the given latitude value in a certain format. I want the code to display it in a changed format:
  DDMMSS.SS

Example: 230521.73,N where N23d-05m-21.73s is the actual latitude. BTW, AnsiString is a C++ Builder class and if you don't know, just ignore it.

Current code:
AnsiString latitudeDisplay(double aValue) {
  char buf[80];
  double dValue = aValue * 180. / M_PI;
  int ival = (int)dValue;
  double fval = fabs(dValue - ival)*60.;
  ival = abs(ival);
  sprintf( buf, "%2.2i%08.5lf,%c", ival, fval, (dValue>=0)?'N':'S' );
  return AnsiString(buf);
}

I guess, I can do it myself but getting it done here would be a double-confirmation. If I am correct, the current code shows the degrees in the first two digits but seconds in the rest of the digits. For the change, the seconds have to be broken into minutes first. Right?

I am giving 100 points here as I want the changed code itself.
0
Comment
Question by:skanade
  • 2
3 Comments
 
LVL 18

Accepted Solution

by:
deighton earned 100 total points
ID: 2689096
char *  latitudedisplay(double aValue,char* buf) {
     int mins;
     double secs;
     double dvalue = aValue * 180.0 / 3.141592654 * ((aValue>=0)? 1.0:-1.0);

     int ival = (int)dvalue;

     mins = (int) ((dvalue - (double) ival)*60.0);

     secs = ((dvalue - ival) - (double) mins /60.0) * 3600.0;
     ival = abs(ival);
     sprintf( buf, "%2.2i %2.2i %f %c", ival, mins,secs, (aValue>=0)?'N':'S' );
     return buf;
}

main()
{
char buf[80];
printf("\n%s",latitudedisplay(-.5654544,buf));
getch();
}
0
 
LVL 18

Expert Comment

by:deighton
ID: 2689929
In any case

double dseconds=(fabs(dValue) * 60.0 - floor(fabs(dValue) * 60.0)) * 60.0;

extracts the number of seconds from a double value in degrees


0
 

Author Comment

by:skanade
ID: 2690535
Thanks!
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

760 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

18 Experts available now in Live!

Get 1:1 Help Now