Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 2


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 }




Содержание  Назад  Вперед