double JD (int Y,int M,double DT);
main() {
int Y,M,day;
double DT,jd;
clrscr();
printf("\n Задайте год григорианского календаря : ");
scanf("%d",&Y);
printf("\n Задайте месяц григорианского календаря : ");
scanf("%d",SM);
printf("\n Задайте день и время : ");
scanf("%lf",&DT);
jd=JD(Y,M,DT);
printf("\n JD =%15.5f",jd);
getch();
}
/*----------------------------------------* /
/*----------------------------------------* /
double JD(int Y,int M,double DT)
/*******************************************/
/* Перевод даты григорианского календаря */
/* в юлианскую дату (алгоритм Меёса) */
/* Y - григорианский год [-4713,9999] */
/* М - григорианский месяц [1,12] */
/* целая часть DT - день [1,31] */
/* дробная часть DT - время, прошедшее */
/* от начала текущего дня [.0,.99999] */
/* Возвращаемое значение - юлианская дата */
/* Целая часть JD - число дней, прошедших */
/* от 1 января 4713 года до новой эры */
/* Дробная часть JD - время, прошедшее */
/* после 12 часов полудня дня JD */
{
int a,b=0,m,y;
long с;
y=Y;
m=M;
if (M<3) { y--; m += 12; }
a=y/100;
if(Y+M/100.+DT/10000 > 1582.1015)
b += 2-a+(int)(a/4.);
c=365.25*y;
if(y<0)c=365.25*y-0.75;
return c+(long)(30.6001*(m+1))+DT+1720994.5+b; }
Программа 9_01.pas
program gd_t6_jd;
uses Crt;
var
Y,M,day:integer; DT,jdl:double;
function JD(Y,M:integer;DT:double):double;
{ Перевод даты григорианского календаря }
{ в юлианскую дату (алгоритм Меёса) }
{ Y - григорианский год [-4713,9999] }
{ М - григорианский месяц [1,12] }
{ целая часть DT - день [1,31] }
{ дробная часть DT - время, прошедшее }
{ от начала текущего дня [.0,.99999] }
{ Возвращаемое значение - юлианская дата }
{ Целая часть JD - число дней, прошедших }
( от 1 января 4713 года до новой эры }
{ Дробная часть JD - время, прошедшее }
{ после 12 часов полудня дня JD }