Solved

Math question: latitude display

Posted on 2000-04-06
3
162 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

929 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

10 Experts available now in Live!

Get 1:1 Help Now