Очень простые и понятные вычисления.
/*///////////////////////////////////////////////////////////////
GradMinSec, GNU C++, 2011-01-13
Artix, master@7masterov.ru, icq:53666599, skype:artixmaster
* Error in code? Nothing is perfect!
* Free source for free Linux, use it for free!
* Please, do not remove this comment!
///////////////////////////////////////////////////////////////*/
#include <stdio.h>
struct GradMin
{
int grad;
double min;
};
struct GradMinSec
{
int grad;
int min;
double sec;
};
GradMin ToGradMin(double angle)
{
GradMin retValue;
retValue.grad = (int)angle;
retValue.min = (angle-retValue.grad)*60;
return retValue;
}
GradMinSec ToGradMinSec(double angle)
{
GradMinSec retValue;
retValue.grad = (int)angle;
retValue.min = (int)((angle-retValue.grad)*60);
retValue.sec = ((angle-retValue.grad)*60-retValue.min)*60;
return retValue;
}
double ToAngle(GradMinSec data)
{
return data.grad + data.min/60.0 + data.sec/3600.0;
}
int main()
{
double angle = 45.92;
GradMin d = ToGradMin(angle);
printf("Angle %.2f, Data=(%d,%.2f')\n",angle,d.grad,d.min);
GradMinSec g = ToGradMinSec(angle);
printf("Angle %.2f, Data=(%d,%d',%.2f'')\n",angle,g.grad,g.min,g.sec);
double a = ToAngle(g);
printf("Data=(%d,%d',%.2f''), Angle=%.2f\n",g.grad,g.min,g.sec,a);
return 1;
}
Справочник алгоритмов v0.05 © 2007-2025 Igor Salnikov aka SunDoctor